接Git分支合併衝突解決,在使用rebase合併衝突狀況下,若是不當心,執行完add後執行了commit,此時本地倉庫HEAD處於遊離態(即HEAD指向未知的分支),如何解決?html
(1)此時,分支處於 無分支 狀態,建立並切換到新分支(git checkout -b conflict),從而解決HEAD遊離狀態;git
(2)放棄這次rebase操做(git rebase --abort);post
(3)在dev分支上merge新分支,出現衝突(git merge conflict);fetch
(4)衝突修改後提交;ui
(5)刪除新分支,合併到遠程倉庫。url
(1)git1在index.html文件中添加「add 2 by git1」,並提交spa
分支樹以下:3d
(2)git2同時在index.html文件中添加「add 2 by git2」,並提交指針
分支樹以下:htm
(3)git2從遠程倉庫fetch最新文件,此時狀態以下,dev和origin/dev在不一樣的分支上
執行rebase,發生衝突(以前全部操做都是在dev分支)
衝突後,分支切換到dev|REBASE 1/1,其中1/1表示有一個提交的衝突。git status能夠看到dev分支基於origin/dev的最新提交dc6c350進行rebase。
查看分支,發現當前分支爲 (no branch, rebasing dev)
分支樹以下,與origin/dev相同:
(4)爲驗證HEAD遊離態,git2解決完衝突後,執行提交
(5)此時,HEAD已處於遊離狀態,分支爲 無分支 ,
此時dev分支任然爲rebase以前的狀態,以下:
因爲發生衝突,此時分支切換到 dev |MWEGING 。index.html文件以下,說明衝突的在「add 2 by git1」行
分支樹以下,能夠看到HEAD指向了dev最新提交,origin/dev與遠程倉庫一致,conflict分支指向原來衝突修改的分支:
提交到遠程倉庫,分支樹以下: