Git分支合并冲突解决(续)

接Git分支合并冲突解决,在使用rebase合并冲突情况下,如果不小心,执行完add后执行了commit,此时本地仓库HEAD处于游离态,如何解决

解决方法 

(1)此时,分支处于 无分支 状态,创建并切换到新分支(git checkout -b conflict),从而解决HEAD游离状态;

(2)放弃此次rebase操作(git rebase --abort);

(3)在dev分支上merge新分支,出现冲突(git merge conflict);

(4)冲突修改后提交;

(5)删除新分支,合并到远程仓库。

以上篇文章项目为例

(1)git1在index.html文件中添加“add 2 by git1”,并提交

  

Git分支合并冲突解决(续)

  分支树如下:

  

Git分支合并冲突解决(续)

  

Git分支合并冲突解决(续)

 

(2)git2同时在index.html文件中添加“add 2 by git2”,并提交

  

Git分支合并冲突解决(续)

  分支树如下:

  

Git分支合并冲突解决(续)

  

Git分支合并冲突解决(续)

(3)git2从远程仓库fetch最新文件,此时状态如下,dev和origin/dev在不同的分支上

  

Git分支合并冲突解决(续)

  

Git分支合并冲突解决(续)

  执行rebase,发生冲突(之前所有操作都是在dev分支)

  

Git分支合并冲突解决(续)

  冲突后,分支切换到dev|REBASE 1/1,其中1/1表示有一个提交的冲突。git status可以看到dev分支基于origin/dev的最新提交dc6c350进行rebase。

  

Git分支合并冲突解决(续)

   查看分支,发现当前分支为 (no branch, rebasing dev)

  

Git分支合并冲突解决(续)

  分支树如下,与origin/dev相同:

  

Git分支合并冲突解决(续)

  

Git分支合并冲突解决(续)

(4)为验证HEAD游离态,git2解决完冲突后,执行提交

  

Git分支合并冲突解决(续)

  

Git分支合并冲突解决(续)

(5)此时,HEAD已处于游离状态,分支为  无分支 ,

创建并切换新分支conflict,解决游离问题

  

Git分支合并冲突解决(续)

  

Git分支合并冲突解决(续)

丢弃本次rebase操作,分支切回dev

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyzxgj.html