Meteor 使用 Git 和 GitHub

2022-06-30 13:54 更新

使用 Git 和 GitHub

GitHub 是一個開源項(xiàng)目的社交化代碼存儲空間,基于 Git 作為版本控制系統(tǒng)。它的首要功能就是代碼共享和項(xiàng)目協(xié)作。在本章你可以快速找到用 GitHub 學(xué)習(xí)本書的一些方法。

本章節(jié)假設(shè)你不太了解 Git 和 GitHub。如果你已經(jīng)熟悉他們了,你可以直接跳到下一章!

代碼提交

Git 最基本的工作單元是提交。你可以把提交設(shè)想為你的代碼庫在某個特定時間的一個快照。

與其簡單地給你一個 Microsocope 項(xiàng)目的最終代碼版本,我們更愿意把開發(fā)過程中每一步的快照都提供出來,這樣你在 Github 上在線看到。

比如,這個就是我們上一章最后一次提交 (https://github.com/DiscoverMeteor/Microscope/commit/chapter3-2)看起來是這樣的:

你可以看到 post_item.js 這個文件的“diff”(差異),換句話說就是這次提交改動了這個文件的什么地方。因?yàn)槲覀冞@個文件是新建的,所以你可以看到所有內(nèi)容都是綠色高亮。

讓我們對比一下另外一個例子本書中以后會用到的文件

這次,只有修改的代碼行被高亮為綠色了。

當(dāng)然,有時候我們并不增加和修改代碼,而是直接刪除某些行:

好了,我們現(xiàn)在看到 GitHub 的第一個好處:一覽代碼的改動。

瀏覽提交的代碼

Git 的提交視圖給我們顯示了本次提交的代碼改動,但是有時候我們還是需要看看沒有修改的那些代碼,從而確認(rèn)他們的代碼看起來合理。

好,讓 GitHub 再次來解決這個問題。在提交頁面上點(diǎn)擊 Browse code(瀏覽代碼)按鈕:

你現(xiàn)在可以看到某次提交的時候代碼庫的樣子了。

GitHub 沒有給我們足夠的視覺提示讓我們知道我們正在看一個提交,不過你可以通過與 “正?!?的主視圖進(jìn)行比較,就會發(fā)現(xiàn)文件結(jié)構(gòu)的不同了:

訪問本地提交

我們剛剛看到在 Github 上如何在線瀏覽某個提交的整個代碼。但是你是否想在本地也看到呢?比如你也許想退回到某次提交的代碼狀態(tài)測試一下那時候運(yùn)行的樣子。

想做到這個你需要首次(也許你早已經(jīng)不是首次了,但是至少在本書中是第一次用命令行)用 git 命令行。對于新手首先要確定你已經(jīng)安裝了 Git。然后 克隆 Clone(或者叫下載一份本地拷貝)一份 Microscope 的代碼庫。命令如下:

git clone git@github.com:DiscoverMeteor/Microscope.git github_microscope

命令行最后的 github_microscope 實(shí)際上就是將會存代碼庫的本地目錄名。假設(shè)你已有了 microscope 文件夾,那就隨便起一個新名字(不是必須用和 GitHub 代碼庫相同的名字)。

讓我們 cd 進(jìn)這個代碼庫,然后就可以使用 git 命令了。

cd github_microscope

現(xiàn)在我們已經(jīng)從 GitHub 克隆了代碼庫,我們已經(jīng)下載了這個應(yīng)用的 全部 代碼,也就是說我們正在看的是最后一次提交。

值得感激的是我們有辦法check out(簽出)代碼回退到某一個特定的提交,而不會影響到其他提交。讓我們試一下:

git checkout chapter3-1
Node:checking out 'chapter3-1'.

你現(xiàn)在是在 'detached HEAD' 狀態(tài). 你可以隨便看看做點(diǎn)實(shí)驗(yàn)性的修改并提交。你只需再次簽出代碼即可放棄你的提交,而不會影響的任何其他分支。

如果你想建立新的分支來保留你的提交,你可以這樣做(現(xiàn)在或者以后也行),遷出代碼的時候使用 -b 參數(shù)。

舉例:

  git checkout -b new_branch_name

HEAD is now at a004b56... Added basic posts list template and static data.

Git 通知你現(xiàn)在在 ‘分離頭’ “detached HEAD” 狀態(tài),也就是說就 Git 而言, 你可以發(fā)現(xiàn)過去的歷史提交但是不能修改。你可以想象一個巫婆用水晶球回顧歷史。

(注意 Git 還有讓你 改變 歷史提交的命令。這更像是時間旅行,不過那些不是我們本書需要討論的范疇了。)

你能夠簡單地輸入 chapter3-1 是因?yàn)槲覀儗?shí)現(xiàn)已經(jīng)把所有的 Microscope 的提交都打了標(biāo)簽了。 如果你的提交沒有標(biāo)簽,那么你需要先找到你的提交的 哈希碼 hash,或者ID。

再一次 GitHub 讓我們可以輕松地在提交的右下角看到藍(lán)色提交框中提交哈希碼。如圖所示:

這一次讓我們試試哈希碼而不是標(biāo)簽:

git checkout c7af59e425cd4e17c20cf99e51c8cd78f82c9932
Previous HEAD position was a004b56... Added basic posts list template and static data.
HEAD is now at c7af59e... Augmented the postsList route to take a limit

好了,別再用水晶球看歷史提交了,讓我們想看看最新的代碼狀態(tài),我們可以讓 Git 簽出主分支master

git checkout master

注意,你也可以現(xiàn)在運(yùn)行 meteor 命令,即使是在“detached HEAD”的狀態(tài)下。你也許首先需要運(yùn)行一下 meteor update 命令,如果 Meteor 提示有丟失的代碼包,因?yàn)?Microscope 的 Git 代碼庫沒有包括包代碼。

Historical Perspective

這里還有一種常見的情形:你看代碼文件的時候發(fā)現(xiàn)有一些你以前沒有見到過的改動。大多數(shù)情況是你不記得什么時候你改了這個文件。你可以逐個檢查每個提交直到你發(fā)現(xiàn)某個提交造成了這個改動,不過還有一種更好的方法,那就是 GitHub 的 歷史 功能。

首先,在 GitHub 上找一個代碼庫里的文件,然后找到 “歷史” 按鈕:

你現(xiàn)在可以看到所有影響這個文件的提交歷史:

問責(zé)游戲

讓我們看看問責(zé)

這個簡潔的視圖給我們逐行顯示了誰修改過這個文件,以及在哪次提交中修改的。(換句話說,知道軟件搞壞了該找誰算賬):

現(xiàn)在的 Git 已經(jīng)是一個相當(dāng)復(fù)雜的工具了 - GitHub 也一樣 - ,所以你不可能在這里覆蓋所有功能。事實(shí)上,我們只是學(xué)習(xí)了一點(diǎn)皮毛。盡管如此,這點(diǎn)皮毛已經(jīng)夠我們在本書的學(xué)習(xí)中用了。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號