Git分支合并冲突解决,在使用rebase合并冲突情况下,如果不小心,执行完add后执行了commit,此时本地仓库HEAD处于游离态(即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”,并提交

  

  分支树如下:

  

  

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

  

  分支树如下:

  

  

(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已处于游离状态,分支为  无分支

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

  

  

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

  

  此时dev分支任然为rebase之前的状态,如下:

  

  • dev分支merge合并conflict分支(该分支解决已之前的冲突),但由于dev保持原貌,合并依然会发生冲突

  

  由于发生冲突,此时分支切换到 dev |MWEGING 。index.html文件如下,说明冲突的在“add 2 by git1”行

  

  • 解决冲突,然后提交,此时自动切换到dev分支

  

  分支树如下,可以看到HEAD指向了dev最新提交,origin/dev与远程仓库一致,conflict分支指向原来冲突修改的分支:

  

  

  • 删除conflict分支

  

  提交到远程仓库,分支树如下:

  

  

总结

  • 解决HEAD指针游离态,并将修改合并到开发分支。
  • rebase除了 --continue外,还有 --skip 和 --abort 操作,其中skip会忽略自己的提交,而更新为远程仓库版本;abort会放弃本次合并操作,回到rebase之前的状态。
  • git reset HEAD <file> ,该命令将文件从暂存区退回到工作区

Git分支合并冲突解决(续)的更多相关文章

  1. Git分支合并冲突解决

    前2天群里发了张git历史图,如下: 根据提交历史,可以看出图中所有分支合并都采用merge的方式,具体merge是怎么操作的,可以阅读下边文章. 根据项目上的需求,如果要求git提交历史是比较简单的 ...

  2. git 分支合并冲突

    准备新的feature1分支,继续我们的新分支开发 [root@node1 git]# git checkout -b feature1 D git/LICENSE.txt Switched to a ...

  3. git分支合并冲突

    合并冲突 如果你在两个不同的分支中,对同一个文件的同一个部分进行了不同的修改,Git 就没法干净的合并它们. 如果你对 #53 问题的修改和有关 hotfix 的修改都涉及到同一个文件的同一处,在合并 ...

  4. eclipse中解决git分支合并冲突

    冲突场景: 在master分支上有文件student.py. 在master上增新一个dev分支 在dev分支上修改文件student.py.增加函数def d():,并commit; 在master ...

  5. git分支合并解决冲突

    git分支合并,解决冲突 1.手动解决冲突 手动解决冲突,需要使用编辑器,把所有文件中出现的冲突地方修改,然后再添加到暂存区再提交 >>>>>>brancha so ...

  6. git使用,多分支合并代码解决冲突,git删除远程分支,删除远程master默认分支方法

    git使用,多分支合并代码解决冲突,git删除远程分支,删除远程master默认分支方法提交代码流程:1.先提交代码到自己分支上2.切换到devlop拉取代码合并到当前分支3.合并后有变动的推送到自己 ...

  7. 转:git合并冲突解决方法

    git合并冲突解决方法 1.git merge冲突了,根据提示找到冲突的文件,解决冲突 如果文件有冲突,那么会有类似的标记 2.修改完之后,执行git add 冲突文件名 3.git commit注意 ...

  8. git入门五(分支合并冲突和衍合)

    分支合并冲突的处理   合并分支的冲突时在不同的分支中修改了同一个文件的同一部分,程序无法把两份有差异的文件合并,这时候需要人为的干预解决冲突.当前处于master 分支,当dev 分支和master ...

  9. 【Git】六、分支管理&冲突解决

    上一节讲了如何和远端的仓库协同工作,这一节介绍一下分支 ---------------------------- 提要 //创建一个分支dev $ git branch dev //切换到dev分支 ...

随机推荐

  1. [SqlServer]2008转到2005的步骤步骤

    2008转到2005的步骤步骤 1. 生成for 2005版本的数据库脚本 2005 的manger studio -- 打开"对象资源管理器"(没有的话按F8), 连接到你的实例 ...

  2. spring揭秘 读书笔记 二 BeanFactory的对象注册与依赖绑定

    本文是王福强所著<<spring揭秘>>一书的读书笔记 我们前面就说过,Spring的IoC容器时一个IoC Service Provider,而且IoC Service Pr ...

  3. Android开发中的安全

    根据Android四大框架来解说安全机制 代码安全 java不同于C/C++,java是解释性语言,存在代码被反编译的隐患: 默认混淆器为proguard,最新版本为4.7: proguard还可用来 ...

  4. zookeeper+kafka集群安装之一

    zookeeper+kafka集群安装之一 准备3台虚拟机, 系统是RHEL64服务版. 1) 每台机器配置如下: $ cat /etc/hosts ... # zookeeper hostnames ...

  5. DB 查询分析器 6.03 如何灵活、快捷地操作国产达梦数据库

    DB 查询分析器 6.03 如何灵活.快捷地操作国产达梦数据库 马根峰 (广东联合电子服务股份有限公司, 广州 510300) 摘要       本文详细地介绍了"万能数据库查询分析器&qu ...

  6. android最火的开源项目

    原文地址:http://www.csdn.net/article/2013-05-21/2815370-Android-open-source-projects-finale 此前,CSDN移动频道推 ...

  7. C#实现MD5算法

    using UnityEngine; using System.Collections; using System.Security.Cryptography; public class GetMD5 ...

  8. 最大的k个数问题

    代码来源: http://blog.csdn.net/v_JULY_v 调整堆为小顶堆的代码片:基本思想就是把孩子节点中大的一个跟父节点交换 void HeapAdjust(int array[], ...

  9. Java多线程操作局部变量与全局变量

    在这篇文章里,我们首先阐述什么是同步,不同步有什么问题,然后讨论可以采取哪些措施控制同步,接下来我们会仿照回顾网络通信时那样,构建一个服务器端的"线程池",JDK为我们提供了一个很 ...

  10. datagrid 新增,并行内编辑,提交保存

    <a class="mini-button" iconCls="icon-add" onclick="addRow()" plain= ...