1. 程式人生 > >Git解決分支衝突及分支管理策略

Git解決分支衝突及分支管理策略

        通常當Git無法自動合併分支時,就必須首先解決衝突後,再提交。

下面咱們先建立一個分支並切換到b1分支:


修改咱們之前的hellogit.txt內容,新增一行:Create a new named f1 branch 


檢視該檔案的狀態,並提交至本地倉庫:


然後切換至master分支:


然後在master分支上把hellogit.txt檔案的最後一行改為:switch to master.

最後在master分支上提交:


現在,master分支和b1分支各自都有自己新的提交,這種情況下,Git無法執行想上一章一樣進行“快速合併”,只能試圖把各自的修改合併起來,但這種合併就可能會有衝突。


Git告訴我們,hellogit.txt檔案存在衝突,必須手動解決衝突後再提交,通過git status可以告訴我們衝突詳情:


可以看到hellogit.txt在兩個分支上都沒修改且這兩個分支沒有merge,下面來看看helligit.txt的內容:


Git用<<<<<<<,=======,>>>>>>>標記出不同分支的內容,我們修改如下後儲存:Create a new named f1 branch;再提交:


好了衝突已經解決並提交了,那麼現在就可以刪除b1分支了:


小結: 當Git無法自動合併分支時,就必須首先解決衝突後,再提交。

分支管理策略:

現在我們仍然建立並切換至b1分支:


然後修改一下hellogit.txt的內容,再提交:


然後回到master主分支上:


這時,我們merge加上兩個引數:--no-ff引數(表示禁用“Fast forward”),-m(和comimt一樣,為merge新提交時的資訊):
使用--no-ff好處是:能看出來哪些分支曾經做過合併。


合併後,我們用git log看看分支歷史:


小結:合併分支時,Git會預設使用“Fast forward”模式,但這種模式下,刪除分支後,會丟掉分支資訊。
在實際工作中,master分支應該是非常穩定的,也就是僅用來發布新版本,平時不能在上面進行開發,一般都是依賴(你和你的同事)各自的分支去進行新的feature開發或解決新的bug,有需要的時候再merge一下就可以了。