專案中git 多分支使用總結

瓜豆發表於2017-03-27

專案一般會有develop、master另個分支develop分支部署在測試環境測試,多個開發工程師把自己的commit都提交到develop分支,交給測試工程師來測試;master分支是上線分支,測試沒問題的develop分支,在需要上線的時候合併到master分支。

保持master和develop提交歷史一致,每次develop合併到master的時候不會出現衝突,保證線上的程式碼和測試環境環測試完成的程式碼一致,避免因為合併程式碼引起線上出問題。

有時候需要臨時上線,可以基於master分支建立hotfix分支,測試後合併到master分支。

hotfix分支和develop分支是並行的,hotfix分支合併到master分支後,需要同時合併到develop分支,保證develop分支和master分支提交歷史一致。

hotfix分為兩種情況:

A:hofix和develop分支沒有修改相同檔案,不會出現衝突

   1)master分支:

        a -> b 

   2)develop分支

        ​a ->b -> c        commit c修改了檔案x

   3)hotfix分支

        a->b-> c1       commit c1 修改了檔案y

    *合併操作如下:*

   1)master merge hotfix

        master: a->b->c1

   2) develop rebase master

        develop: a->b->c1->c    該過程中不會出現衝突(因為沒有修改相同檔案)

B:hotFix和develop分支修改相同檔案,出現衝突

   1)master分支:

        a -> b 

   2)develop分支

        ​a ->b -> c         commit c修改了檔案x

   3)hotfix分支

        a->b-> c1          commit c1 修改了檔案x

   *合併操作如下:*

   1)master merge hotfix

        master: a->b->c

   2) develop rebase master

         develop: a->b->c1->c2    

該過程中出現衝突(因為修改了相同檔案),需要手動修改衝突,確定最終x檔案的版本。commit c2是在c版本上解決衝突後的版本

按照上述流程修改後,develop合併master不需要解決衝突

tip: merge的時候請包含提交的commit資訊,使用下面命令操作,這樣方便檢視歷史記錄

    git merge master --log --no-ff

相關文章