1. 程式人生 > >git--分支管理策略

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分支中,就有講述