git中的分支並不是我們所理解的類似於岔路口的那種,其實這裡的分支更多的則是類似於我們所說的平行宇宙。簡單來說就是你在做這件事情的時候完全不影響另一件事情的發展,也就是說,你本人在這個宇宙裡做著這件事,另乙個你在平行宇宙裡做著和你不一樣的另一件事,到了某個時間節點,你發現,兩件事情你都做了。
那麼分支到底有什麼實際作用呢?我們還是通過例子來說明吧,假如現在有乙個半成品的專案,大概完成了50%,你現在正在開發乙個新的功能,完成之後,這個專案整體的完成度就會是70%,但是你現在的這個功能只開發了50%,此時老闆為了提前交付,準備剩下的那佔了整體專案30%的功能由另乙個同事開發。但是你們倆的功能都要依賴已經開發好的那50%,如果你此時提交你的部分功能,那麼由於你的功能還未開發完整,所以肯定會導致後續功能受阻,但是如果你不提交的話,就會影響整體的專案進度。現在,有了git分支的概念後,這一切都變得簡單了。你在之前的專案節點處建立乙個分支,然後在你自己的這個分支開發你未完成的功能,不會影響到其他人的進度,也不會影響到專案進展。當你把自己的功能開發完畢後,再合併到之前的專案中即可。
雖然svn等集中式版本控制系統也有類似的分支管理功能,但是這些版本控制系統對於分支的建立和切換操作速度很慢,而git就不一樣,git的建立和切換分支操作速度都相當快!
建立分支
在git中,對於我們每次提交的檔案,git都會把它們串成一條時間線,這條時間線其實就是乙個分支,即master分支,也就是git為我們自動建立的分支,通常我們稱這個分支為主分支。我們之前所說過的head指標其實就是指向master的,而master才是指向最近提交的節點的,即master指向最新的commit。
當有一次提交時,master就會自動向前移動,隨著提交越來越多,master分支也就越來越長。當我們建立新分支時,git就會建立乙個新的指標,指向和master相同的提交,然後讓head指向這個新建立的指標。比如說我們建立乙個dev的分支。
master和dev指向了相同的提交,而head指向了dev,表示當前分支是在dev上。所以,git建立新分割槽的速度其實是很快的,只需要增加乙個指標,然後改變head的指向即可。
建立並切換分支其實是兩個過程,但是在git中,這兩個過程可以合為一步完成。
git checkout -b dev
git checkout命令配合-b引數使用表示建立並切換到相應分支。其實就相當於
建立並切換之後我們可以使用git branch命令來檢視當前分支
此命令會列出所有分支,並在當前分支之前使用「*」標記。然後我們就可以在dev分支上對之前的demo.txt檔案進行修改了。
修改完成之後,提交
現在我們假定當前dev分支的工作已經全部完成,此時
由於我們是在dev分支上進行開發的,所以新提交一次後,dev指標就往前移動一步,指向最新的提交,而master指標不變。此時,由於在dev分支上的工作已經完成,我們需要將dev分支合併到master上。合併之前,我們先要將分支切換到master上。
之後,驗證一下demo.txt的內容,看是否已經被修改。
其實此時的demo.txt檔案並沒有被修改,因為我們修改的是dev分支上的demo.txt,而此時我們是在master分支上。然後我們合併分支
合併之後,此時的head指標便指向了master,而master和dev同時指向的是最新的提交。
此時我們檢視一下demo.txt的內容,看是否已經被修改。
如果此時我們認為dev分支已經完成了它的使命,暫時不需要它的存在了,那麼此時我們就可以將其刪掉。
刪除之後,我們再使用git branch命令檢視分支,發現只有master乙個分支了。
因為git中建立、合併分支的速度非常快,而且又不影響master分支,整個分支開發過程較安全,所以一般在實際開發中,鼓勵使用分支開發。
命令說明
git branch
檢視分支
git branch
建立分支
git checkout
切換分支
git switch
切換分支
git checkout -b
建立並切換分支
git switch -b
建立並切換分支
git merge
合併分支
git branch -d
刪除分支
Git建立 合併和刪除分支
在版本回退裡,每次提交,git都把它們串成一條時間線,這條時間線就是乙個分支。截止到目前,只有一條時間線,在git裡,這個分支叫主分支,即master分支。head嚴格來說不是指向提交,而是指向master,master才是指向提交的,所以,head指向的就是當前分支。一開始的時候,master分支...
git分支的建立,合併,刪除
一開始的時候,master分支是一條線,git用master指向最新的提交,再用head指向master,就能確定當前分支,以及當前分支的提交點。每次提交,master分支都會向前移動一步,這樣,隨著你不斷提交,master分支的線也越來越長。當我們建立新的分支,例如dev時,git新建了乙個指標叫...
git之建立 刪除分支
建立分支 git branch yourbranch git checkout yourbranch 建立並切換到分支 git checkout b yourbranch 合併分支 到master分支上 git checkout master 先切換到master上 git merge yourbr...