Git分支合并冲突解决(续)
接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分支合并冲突解决(续)的更多相关文章
- Git分支合并冲突解决
前2天群里发了张git历史图,如下: 根据提交历史,可以看出图中所有分支合并都采用merge的方式,具体merge是怎么操作的,可以阅读下边文章. 根据项目上的需求,如果要求git提交历史是比较简单的 ...
- git 分支合并冲突
准备新的feature1分支,继续我们的新分支开发 [root@node1 git]# git checkout -b feature1 D git/LICENSE.txt Switched to a ...
- git分支合并冲突
合并冲突 如果你在两个不同的分支中,对同一个文件的同一个部分进行了不同的修改,Git 就没法干净的合并它们. 如果你对 #53 问题的修改和有关 hotfix 的修改都涉及到同一个文件的同一处,在合并 ...
- eclipse中解决git分支合并冲突
冲突场景: 在master分支上有文件student.py. 在master上增新一个dev分支 在dev分支上修改文件student.py.增加函数def d():,并commit; 在master ...
- git分支合并解决冲突
git分支合并,解决冲突 1.手动解决冲突 手动解决冲突,需要使用编辑器,把所有文件中出现的冲突地方修改,然后再添加到暂存区再提交 >>>>>>brancha so ...
- git使用,多分支合并代码解决冲突,git删除远程分支,删除远程master默认分支方法
git使用,多分支合并代码解决冲突,git删除远程分支,删除远程master默认分支方法提交代码流程:1.先提交代码到自己分支上2.切换到devlop拉取代码合并到当前分支3.合并后有变动的推送到自己 ...
- 转:git合并冲突解决方法
git合并冲突解决方法 1.git merge冲突了,根据提示找到冲突的文件,解决冲突 如果文件有冲突,那么会有类似的标记 2.修改完之后,执行git add 冲突文件名 3.git commit注意 ...
- git入门五(分支合并冲突和衍合)
分支合并冲突的处理 合并分支的冲突时在不同的分支中修改了同一个文件的同一部分,程序无法把两份有差异的文件合并,这时候需要人为的干预解决冲突.当前处于master 分支,当dev 分支和master ...
- 【Git】六、分支管理&冲突解决
上一节讲了如何和远端的仓库协同工作,这一节介绍一下分支 ---------------------------- 提要 //创建一个分支dev $ git branch dev //切换到dev分支 ...
随机推荐
- Python学习笔记 - 函数参数
>>> def power(x): ... return x * x ... >>> power(5) 25 >>> def power(x, n ...
- jsp中的路径与跳转
在jsp(serlvet)中,页面的"变换"有两种方式,第一重定向,第二转发: 先说重定向,它的调用方式是这样的 response.sendredirect("uri&q ...
- Android中让多个线程顺序执行探究
线程调度是指按照特定机制为多个线程分配CPU的使用权. 有两种调度模型:分时调度模型和抢占式调度模型. 分时调度模型:是指让所有的线程轮流获得cpu的使用权,并且平均分配每个线程占用的CPU的时间片. ...
- java集合类中的迭代器模式
不说模式的问题,看一个<<设计模式之禅>>里面的例子. 老板要看到公司了各个项目的情况.(我知道我这个概述很让人头大,看代码吧) 示例程序 v1 package Iterato ...
- OpenCV——PS 图层混合算法 (四)
具体的算法原理可以参考 PS图层混合算法之四(亮光, 点光, 线性光, 实色混合) // PS_Algorithm.h #ifndef PS_ALGORITHM_H_INCLUDED #define ...
- 超高速前端开发工具——Emmet
[由于 CSDN 不支持富文本编辑器写的文章迁移到 Markdown 编辑器中修改,已重发了一个重新排版的版本, 新版链接:http://blog.csdn.net/ys743276112/artic ...
- Linux 系统应用编程——线程基础
传统多任务操作系统中一个可以独立调度的任务(或称之为顺序执行流)是一个进程.每个程序加载到内存后只可以唯一地对应创建一个顺序执行流,即传统意义的进程.每个进程的全部系统资源是私有的,如虚拟地址空间,文 ...
- How--to-deploy-smart-contracts-on
The following smart contract code is only an example and is NOT to be used in Production systems. pr ...
- 八、Join 连接查询
文档目录 开发中...
- MongoDB学习笔记(三)
第三章 索引操作及性能测试 索引在大数据下的重要性就不多说了 下面测试中用到了mongodb的一个客户端工具Robomongo,大家可以在网上选择下载.官网下载地址:http://www.robomo ...