Git使用詳細教程(8):Git分支

建立分支

當咱們使用git init projectName命令的時候,Git就會默認幫咱們建立一個分支,名字叫作master。git

咱們還能夠建立其它分支,使用git branch new_branch(新分支名稱)shell

若是咱們想在建立新分支的同時,並切換到新建的分支,須要加上額外的參數-b,使用git checkout -b new_branch(新分支名稱),它等同於下面的兩條命令3d

git branch new_branch
git checkout new_branch

查看分支

能夠經過以下命令查看當前所處分支指針

git branch

切換分支

當咱們從一個分支切換到另外一個分支,能夠使用以下命令code

git checkout another_branch(另外一個分支)

例如,從master切換到dev分支blog

刪除分支

刪除分支命令it

git branch -d de_branch(待刪除分支名)
git branch -D de_branch(待刪除分支名)

-d-D有啥區別呢,若是你想刪除的分支的內容已經合併到主分支了,那麼使用-d便可,若是你在新分支上寫了東西,可是並無合併到主分支,你還想把它刪除,你就得使用-D,Git這樣作是爲了保險起見,怕你忘了合併就刪除了,可是若是你確實是想還沒合併就刪除了就能夠使用-Dast

下圖中,我再bug567分支作了一次提交操做,可是並無合併到其它分支,在使用git branch -d bug567時,提示dev分支並無合併,若是確實想刪除它,能夠使用git branch -D bug567class

注意,咱們不能刪除咱們當前所處的分支,什麼意思呢?若是咱們當前處於dev分支,咱們經過git branch -d dev是沒法刪除dev分支的,須要先切換到其它分支,再去刪除這個dev分支,由於若是你當前處於dev分支,你還把它給刪除了,那麼你當前該處於什麼分支呢?這是不合理的,因此Git也不容許bug

分支合併

當咱們在一個分支上寫好代碼後須要把代碼合併到主分支,這裏須要用到git merge命令,下圖給出了示例,dev分支裏index.txt有兩行文字,而master分支index.txt裏只有一行,這裏吧dev分支的內容和master分支的內容合併,先切換到master分支,而後執行以下面命令

git merge dev

git branch -v

顯示當前所處分支,最新的一條提交消息

探尋分支本質

分支

下圖是一個分支上由commit id組成的記錄線

HEAD保存在哪裏呢?

上面圖中的這種也叫作fast-forward,快進,這是在沒有衝突的狀況下,從某一個提交直接跳轉到最新的一個提交上。

若是有衝突的話,咱們須要在主分支把衝突解決,而後再commit。此時若是咱們切換到dev分支,再執行git merge master時,也不會衝突了,而是fast-forward,此時咱們再查看dev分支最新的commit id會發現和剛剛在主分支最新的commit id同樣,dev分支只是採用了fast-forward方式更新了commit id,道理很簡單,由於在master咱們解決衝突後作了提交, master已經往前走了一步了,而後咱們把往前走了一步的master再往回合併的話,此時實際上dev分支已經落後於master,git會認爲這是一個快進,因此直接有指向dev的指針直接指向下一個master所指向的最新commit,直接就跳過去了。

下圖這種方式,即便沒有衝突,也會產生一個新的commmit id

相關文章
相關標籤/搜索