W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
GitHub 是一個(gè)開(kāi)源項(xiàng)目的社交化代碼存儲(chǔ)空間,基于 Git 作為版本控制系統(tǒng)。它的首要功能就是代碼共享和項(xiàng)目協(xié)作。在本章你可以快速找到用 GitHub 學(xué)習(xí)本書(shū)的一些方法。
本章節(jié)假設(shè)你不太了解 Git 和 GitHub。如果你已經(jīng)熟悉他們了,你可以直接跳到下一章!
Git 最基本的工作單元是提交。你可以把提交設(shè)想為你的代碼庫(kù)在某個(gè)特定時(shí)間的一個(gè)快照。
與其簡(jiǎn)單地給你一個(gè) Microsocope 項(xiàng)目的最終代碼版本,我們更愿意把開(kāi)發(fā)過(guò)程中每一步的快照都提供出來(lái),這樣你在 Github 上在線看到。
比如,這個(gè)就是我們上一章最后一次提交 (https://github.com/DiscoverMeteor/Microscope/commit/chapter3-2)看起來(lái)是這樣的:
你可以看到 post_item.js
這個(gè)文件的“diff”(差異),換句話說(shuō)就是這次提交改動(dòng)了這個(gè)文件的什么地方。因?yàn)槲覀冞@個(gè)文件是新建的,所以你可以看到所有內(nèi)容都是綠色高亮。
讓我們對(duì)比一下另外一個(gè)例子本書(shū)中以后會(huì)用到的文件:
這次,只有修改的代碼行被高亮為綠色了。
當(dāng)然,有時(shí)候我們并不增加和修改代碼,而是直接刪除某些行:
好了,我們現(xiàn)在看到 GitHub 的第一個(gè)好處:一覽代碼的改動(dòng)。
Git 的提交視圖給我們顯示了本次提交的代碼改動(dòng),但是有時(shí)候我們還是需要看看沒(méi)有修改的那些代碼,從而確認(rèn)他們的代碼看起來(lái)合理。
好,讓 GitHub 再次來(lái)解決這個(gè)問(wèn)題。在提交頁(yè)面上點(diǎn)擊 Browse code(瀏覽代碼)按鈕:
你現(xiàn)在可以看到某次提交的時(shí)候代碼庫(kù)的樣子了。
GitHub 沒(méi)有給我們足夠的視覺(jué)提示讓我們知道我們正在看一個(gè)提交,不過(guò)你可以通過(guò)與 “正常” 的主視圖進(jìn)行比較,就會(huì)發(fā)現(xiàn)文件結(jié)構(gòu)的不同了:
我們剛剛看到在 Github 上如何在線瀏覽某個(gè)提交的整個(gè)代碼。但是你是否想在本地也看到呢?比如你也許想退回到某次提交的代碼狀態(tài)測(cè)試一下那時(shí)候運(yùn)行的樣子。
想做到這個(gè)你需要首次(也許你早已經(jīng)不是首次了,但是至少在本書(shū)中是第一次用命令行)用 git
命令行。對(duì)于新手首先要確定你已經(jīng)安裝了 Git。然后 克隆 Clone(或者叫下載一份本地拷貝)一份 Microscope 的代碼庫(kù)。命令如下:
git clone git@github.com:DiscoverMeteor/Microscope.git github_microscope
命令行最后的 github_microscope
實(shí)際上就是將會(huì)存代碼庫(kù)的本地目錄名。假設(shè)你已有了 microscope
文件夾,那就隨便起一個(gè)新名字(不是必須用和 GitHub 代碼庫(kù)相同的名字)。
讓我們 cd
進(jìn)這個(gè)代碼庫(kù),然后就可以使用 git
命令了。
cd github_microscope
現(xiàn)在我們已經(jīng)從 GitHub 克隆了代碼庫(kù),我們已經(jīng)下載了這個(gè)應(yīng)用的 全部 代碼,也就是說(shuō)我們正在看的是最后一次提交。
值得感激的是我們有辦法check out(簽出)代碼回退到某一個(gè)特定的提交,而不會(huì)影響到其他提交。讓我們?cè)囈幌拢?/p>
git checkout chapter3-1
Node:checking out 'chapter3-1'.
你現(xiàn)在是在 'detached HEAD' 狀態(tài). 你可以隨便看看做點(diǎn)實(shí)驗(yàn)性的修改并提交。你只需再次簽出代碼即可放棄你的提交,而不會(huì)影響的任何其他分支。
如果你想建立新的分支來(lái)保留你的提交,你可以這樣做(現(xiàn)在或者以后也行),遷出代碼的時(shí)候使用 -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),也就是說(shuō)就 Git 而言, 你可以發(fā)現(xiàn)過(guò)去的歷史提交但是不能修改。你可以想象一個(gè)巫婆用水晶球回顧歷史。
(注意 Git 還有讓你 改變 歷史提交的命令。這更像是時(shí)間旅行,不過(guò)那些不是我們本書(shū)需要討論的范疇了。)
你能夠簡(jiǎn)單地輸入 chapter3-1
是因?yàn)槲覀儗?shí)現(xiàn)已經(jīng)把所有的 Microscope 的提交都打了標(biāo)簽了。 如果你的提交沒(méi)有標(biāo)簽,那么你需要先找到你的提交的 哈希碼 hash,或者ID。
再一次 GitHub 讓我們可以輕松地在提交的右下角看到藍(lán)色提交框中提交哈希碼。如圖所示:
這一次讓我們?cè)囋嚬4a而不是標(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 代碼庫(kù)沒(méi)有包括包代碼。
這里還有一種常見(jiàn)的情形:你看代碼文件的時(shí)候發(fā)現(xiàn)有一些你以前沒(méi)有見(jiàn)到過(guò)的改動(dòng)。大多數(shù)情況是你不記得什么時(shí)候你改了這個(gè)文件。你可以逐個(gè)檢查每個(gè)提交直到你發(fā)現(xiàn)某個(gè)提交造成了這個(gè)改動(dòng),不過(guò)還有一種更好的方法,那就是 GitHub 的 歷史 功能。
首先,在 GitHub 上找一個(gè)代碼庫(kù)里的文件,然后找到 “歷史” 按鈕:
你現(xiàn)在可以看到所有影響這個(gè)文件的提交歷史:
讓我們看看問(wèn)責(zé):
這個(gè)簡(jiǎn)潔的視圖給我們逐行顯示了誰(shuí)修改過(guò)這個(gè)文件,以及在哪次提交中修改的。(換句話說(shuō),知道軟件搞壞了該找誰(shuí)算賬):
現(xiàn)在的 Git 已經(jīng)是一個(gè)相當(dāng)復(fù)雜的工具了 - GitHub 也一樣 - ,所以你不可能在這里覆蓋所有功能。事實(shí)上,我們只是學(xué)習(xí)了一點(diǎn)皮毛。盡管如此,這點(diǎn)皮毛已經(jīng)夠我們?cè)诒緯?shū)的學(xué)習(xí)中用了。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: