git--分支管理策略

一、分支管理策略

通常,合併分支時,如果可能,git會用fast forward模式,但是有些快速合併不能成而且合併時沒有衝突,這個時候會合並之後並做一次新的提交。
比如這樣的場景

  • 第一步:創建一個新分支,在新分支中創建一個文件,在文件中寫入內容,然後提交
  • 第二步:在主分支中的code.txt中寫入一行內,然後提交

在這種情況下,雖然主分支和dev分支都有修改操作,但是並不是修改同一個文件,因此可以正常完成合並;但是此時執行合併的時候,無法執行快速合併,而是git會自動將dev分支中的內容合併到master分支,然後執行提交。
(1)創建切換到dev分支下。

[[email protected] git_test]# git checkout -b dev
Switched to a new branch 'dev'
[[email protected] git_test]# git branch
* dev
  master

(2)新建一個文件code3.txt編輯內容如下,並提交一個commit。

[[email protected] git_test]# echo "new file" >> code2.txt
[[email protected] git_test]# git add code2.txt 
[[email protected] git_test]# git commit -m "add a new file"
[dev 3b235ed] add a new file
 1 file changed, 1 insertion(+)
 create mode 100644 code2.txt

(3)切換回master分支,編輯code.txt並進行一個提交。

[[email protected] git_test]# git checkout master
Switched to branch 'master'
[[email protected] git_test]# echo "*******">>code.txt 
[[email protected] git_test]# git add code.txt 
[[email protected] git_test]# git commit -m "add a new line ***"
[master dd6ffc2] add a new line ***
 1 file changed, 1 insertion(+)

(4)合併dev分支的內容到master分支。

# git merge dev

(5)出現如下提時,這是因爲這次不能進行快速合併,所以git提示輸入合併說明信息,輸入之後合併內容之後git會自動創建一次新的提交。
在這裏插入圖片描述
將第一行內容替換爲新版本的版本名,如下:
在這裏插入圖片描述
保存後會,自動提交。
(6)使用分支命令查看分支信息
在這裏插入圖片描述
(7)刪除dev分支。

# git branch -d dev
Deleted branch dev (was 3b235ed).

關於禁用快速合併
如果要強制禁用fast forward模式,git就會在merge時生成一個新的commit,這樣的好處是:從分支歷史上就可以看出分支信息。
(1)創建並切換到dev分支。

[[email protected] git_test]# git checkout -b dev
Switched to a new branch 'dev'

(2)修改code.txt內容,並提交一個commit。

[[email protected] git_test]# echo "66666666">>code.txt 
[[email protected] git_test]# git add code.txt 
[[email protected] git_test]# git commit -m 'add 666'
[dev 5236145] add 666
 1 file changed, 1 insertion(+)

(3)切換回master分支。

[[email protected] git_test]# git checkout master
Switched to branch 'master'

(4)準備合併dev分支,請注意–no-ff參數,表示禁用Fast forward:

[[email protected] git_test]# git merge --no-ff -m "不使用快速合併" dev
Merge made by the 'recursive' strategy.
 code.txt | 1 +
 1 file changed, 1 insertion(+)

因爲本次合併要創建一個新的commit,所以加上-m參數,把commit描述寫進去。
(5)合併後,我們用git log看看分支歷史:
可以看到,不使用Fast forward模式,merge後就像這樣:
在這裏插入圖片描述

在這裏插入圖片描述 思考:在什麼情況下,應該禁用快速合併呢 在下篇博文Bug分支中,就有講述