1. 程式人生 > 實用技巧 >Git使用詳細教程(8):Git分支

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

目錄

建立分支

當我們使用git init projectName命令的時候,Git就會預設幫我們建立一個分支,名字叫做master。

我們還可以建立其它分支,使用git branch new_branch(新分支名稱)

如果我們想在建立新分支的同時,並切換到新建的分支,需要加上額外的引數-b,使用git checkout -b new_branch(新分支名稱),它等同於下面的兩條命令

git branch new_branch
git checkout new_branch

檢視分支

可以通過如下命令檢視當前所處分支

git branch

切換分支

當我們從一個分支切換到另一個分支,可以使用如下命令

git checkout another_branch(另一個分支)

例如,從master切換到dev分支

刪除分支

刪除分支命令

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

-d-D有啥區別呢,如果你想刪除的分支的內容已經合併到主分支了,那麼使用-d即可,如果你在新分支上寫了東西,但是並沒有合併到主分支,你還想把它刪除,你就得使用-D,Git這樣做是為了保險起見,怕你忘了合併就刪除了,但是如果你確實是想還沒合併就刪除了就可以使用-D

下圖中,我再bug567分支做了一次提交操作,但是並沒有合併到其它分支,在使用git branch -d bug567

時,提示dev分支並沒有合併,如果確實想刪除它,可以使用git branch -D bug567

注意,我們不能刪除我們當前所處的分支,什麼意思呢?如果我們當前處於dev分支,我們通過git branch -d dev是無法刪除dev分支的,需要先切換到其它分支,再去刪除這個dev分支,因為如果你當前處於dev分支,你還把它給刪除了,那麼你當前該處於什麼分支呢?這是不合理的,所以Git也不允許

分支合併

當我們在一個分支上寫好程式碼後需要把程式碼合併到主分支,這裡需要用到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