在本系列的前兩篇文章中,我們開(kāi)始使用 Git,學(xué)會(huì)如何克隆項(xiàng)目,修改、增加和刪除內(nèi)容。在這第三篇文章中,我將介紹 Git 分支,為何以及如何使用分支。
不妨用樹(shù)來(lái)描繪 Git 倉(cāng)庫(kù)。圖中的樹(shù)有很多分支,或長(zhǎng)或短,或從樹(shù)干延伸或從其它分支延伸。在這里,我們用樹(shù)干比作倉(cāng)庫(kù)的 master 分支,其中master代指 ”master 分支”,是 Git 倉(cāng)庫(kù)的中心分支或第一個(gè)分支。為簡(jiǎn)單起見(jiàn),我們假設(shè)master是樹(shù)干,其它分支都是從該分支分出的。
為何在 Git 倉(cāng)庫(kù)中使用分支
使用分支的主要理由為:
如果你希望為項(xiàng)目增加新特性,但很可能會(huì)影響當(dāng)前可正常工作的代碼。對(duì)于該項(xiàng)目的活躍用戶而言,這是很糟糕的事情。與其將特性加入到其它人正在使用的master分支,更好的方法是在倉(cāng)庫(kù)的其它分支中變更代碼,下面會(huì)給出具體的工作方式。
更重要的是,Git 其設(shè)計(jì)用于協(xié)作。如果所有人都在你代碼倉(cāng)庫(kù)的master分支上操作,會(huì)引發(fā)很多混亂。對(duì)編程語(yǔ)言或項(xiàng)目的知識(shí)和閱歷因人而異;有些人可能會(huì)編寫(xiě)有錯(cuò)誤或缺陷的代碼,也可能會(huì)編寫(xiě)你覺(jué)得不適合該項(xiàng)目的代碼。使用分支可以讓你核驗(yàn)他人的貢獻(xiàn)并選擇適合的加入到項(xiàng)目中。(這里假設(shè)你是代碼庫(kù)唯一的所有者,希望對(duì)增加到項(xiàng)目中的代碼有完全的控制。在真實(shí)的項(xiàng)目中,代碼庫(kù)有多個(gè)具有合并代碼權(quán)限的所有者)
創(chuàng)建分支
讓我們回顧本系列上一篇文章,看一下在我們的 Demo 目錄中分支是怎樣的。如果你沒(méi)有完成上述操作,請(qǐng)按照文章中的指示從 GitHub 克隆代碼并進(jìn)入 Demo 目錄。運(yùn)行如下命令:
pwd
git branch
ls -la
pwd命令(是當(dāng)前工作目錄的英文縮寫(xiě))返回當(dāng)前你所處的目錄(以便確認(rèn)你在Demo目錄中),git branch列出該項(xiàng)目在你主機(jī)上的全部分支,ls -la列出當(dāng)前目錄下的所有文件。你的終端輸出類似于:
在master分支中,只有一個(gè)文件README.md。(Git 會(huì)友好地忽略掉其它目錄和文件。)
接下來(lái),運(yùn)行如下命令:
git status
git checkout -bmyBranch
git status
第一條命令git status告知你當(dāng)前位于branch master,(就像在終端中看到的那樣)它與origin/master處于同步狀態(tài),這意味著 master 分支的本地副本中的全部文件也出現(xiàn)在 GitHub 中。兩份副本沒(méi)有差異,所有的提交也是一致的。
下一條命令git checkout -b myBranch中的-b告知 Git 創(chuàng)建一個(gè)名為myBranch的新分支,然后checkout命令將我們切換到新創(chuàng)建的分支。運(yùn)行第三條命令git status確保你已經(jīng)位于剛創(chuàng)建的分支下。
如你所見(jiàn),git status告知你當(dāng)前處于myBranch分支,沒(méi)有變更需要提交。這是因?yàn)槲覀兗葲](méi)有增加新文件,也沒(méi)有修改已有文件。
如果希望以可視化的方式查看分支,可以運(yùn)行g(shù)itk命令。如果遇到報(bào)錯(cuò)bash: gitk: command not found...,請(qǐng)先安裝gitk軟件包(找到你操作系統(tǒng)對(duì)應(yīng)的安裝文檔,以獲得安裝方式)。
(LCTT 譯注:需要在有 X 服務(wù)器的終端運(yùn)行g(shù)itk,否則會(huì)報(bào)錯(cuò))
下圖展示了我們?cè)?Demo 項(xiàng)目中的所作所為:你最后一次提交(的對(duì)應(yīng)信息)是Delete file.txt,在此之前有三次提交。當(dāng)前的提交用黃點(diǎn)標(biāo)注,之前的提交用藍(lán)點(diǎn)標(biāo)注,黃點(diǎn)和Delete file.txt之間的三個(gè)方塊展示每個(gè)分支所在的位置(或者說(shuō)每個(gè)分支中的最后一次提交的位置)。由于myBranch剛創(chuàng)建,提交狀態(tài)與master分支及其對(duì)應(yīng)的記為remotes/origin/master的遠(yuǎn)程master分支保持一致。(非常感謝來(lái)自 Red Hat 的Peter Savage讓我知道gitk這個(gè)工具)
下面讓我們?cè)趍yBranch分支下創(chuàng)建一個(gè)新文件并觀察終端輸出。運(yùn)行如下命令:
echo"Creating a newFile on myBranch" > newFile
cat newFile
git status
第一條命令中的echo創(chuàng)建了名為newFile的文件,接著cat newFile打印出文件內(nèi)容,最后git status告知你我們myBranch分支的當(dāng)前狀態(tài)。在下面的終端輸出中,Git 告知myBranch分支下有一個(gè)名為newFile的文件當(dāng)前處于untracked狀態(tài)。這表明我們沒(méi)有讓 Git 追蹤發(fā)生在文件newFile上的變更。
下一步是增加文件,提交變更并將newFile文件推送至myBranch分支(請(qǐng)回顧本系列上一篇文章獲得更多細(xì)節(jié))。
git add newFile
git commit -m"Adding newFile to myBranch"
git push origin myBranch
在上述命令中,push命令使用的分支參數(shù)為myBranch而不是master。Git 添加newFile并將變更推送到你 GitHub 賬號(hào)下的 Demo 倉(cāng)庫(kù)中,告知你在 GitHub 上創(chuàng)建了一個(gè)與你本地副本分支myBranch一樣的新分支。終端輸出截圖給出了運(yùn)行命令的細(xì)節(jié)及命令輸出。
當(dāng)你訪問(wèn) GitHub 時(shí),在分支選擇的下拉列表中可以發(fā)現(xiàn)兩個(gè)可供選擇的分支。
點(diǎn)擊myBranch切換到myBranch分支,你可以看到在此分支上新增的文件。
截至目前,我們有兩個(gè)分支:一個(gè)是master分支,只有一個(gè)README.md文件;另一個(gè)是myBranch分支,有兩個(gè)文件。
你已經(jīng)知道如何創(chuàng)建分支了,下面我們?cè)賱?chuàng)建一個(gè)分支。輸入如下命令:
git checkout master
git checkout -bmyBranch2
touch newFile2
git add newFile2
git commit -m"Adding newFile2 to myBranch2"
git push origin myBranch2
我不再給出終端輸出,需要你自己嘗試,但你可以在GitHub 代碼庫(kù)中驗(yàn)證你的結(jié)果。
刪除分支
由于我們?cè)黾恿藘蓚€(gè)分支,下面刪除其中的一個(gè)(myBranch),包括兩步:
刪除本地分支你不能刪除正在操作的分支,故切換到master分支 (或其它你希望保留的分支),命令及終端輸出如下:
git branch可以列出可用的分支,使用checkout切換到master分支,然后使用git branch -D myBranch刪除該分支。再次運(yùn)行g(shù)it branch檢查是否只剩下兩個(gè)分支(而不是三個(gè))。
刪除 GitHub 上的分支使用如下命令刪除myBranch的遠(yuǎn)程分支:
git push origin :myBranch
上面push命令中分支名稱前面的冒號(hào)(:)告知 GitHub 刪除分支。另一種寫(xiě)法為:
git push -dorigin myBranch
其中 -d (也可以用 --delete) 也用于告知 GitHub 刪除你的分支。
我們學(xué)習(xí)了 Git 分支的使用,在本系列的下一篇文章中,我們將介紹如何執(zhí)行 fetch 和 rebase 操作,對(duì)于多人同時(shí)的貢獻(xiàn)的項(xiàng)目而言,這是很必須學(xué)會(huì)的。
-
MASTER
+關(guān)注
關(guān)注
0文章
104瀏覽量
11288 -
Git
+關(guān)注
關(guān)注
0文章
199瀏覽量
15761 -
GitHub
+關(guān)注
關(guān)注
3文章
471瀏覽量
16442
原文標(biāo)題:Git 分支操作介紹
文章出處:【微信號(hào):LinuxHub,微信公眾號(hào):Linux愛(ài)好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論