描述下我的情况:
我从master分支切了一个f1分支,然后在f1分支上开发了若干个提交,再将f1 merge 到了master分支,然后突然发现f1上面bug太多,不应该merge master,所以我就使用命令 git revert -m 1 合并commitid,虽然将master的代码撤销到了合并f1之前的样子,但是我再在f1分支上将那些bug修复之后,准备再次合并到master分支,问题来了!!!合并的时候出现大量冲突,请问遇到这种情况一般怎么处理比较好?
描述下我的情况:
我从master分支切了一个f1分支,然后在f1分支上开发了若干个提交,再将f1 merge 到了master分支,然后突然发现f1上面bug太多,不应该merge master,所以我就使用命令 git revert -m 1 合并commitid,虽然将master的代码撤销到了合并f1之前的样子,但是我再在f1分支上将那些bug修复之后,准备再次合并到master分支,问题来了!!!合并的时候出现大量冲突,请问遇到这种情况一般怎么处理比较好?
在 master 上把 revert 再 revert 一下,然后 merge 。
master --- A ---- M --- R ---
/
f1 --- B ---/---- FIX
M
是你 merger 的 commit, R
是你 revert 的 commit 。 FIX
是你在 f1 上的修复。
再你最终 merge 的时候,R
与 FIX
有一个共同的祖先是 B
。而 R
相当于把 B
的修改“复原”了,而 FIX
里 B
的修改还在。于是很容易冲突。
(即使没有冲突,直接 merger 之后 master 上也没有 B
的修改,不是期望的结果)
解决的话可以在 master 上在 revert 一下 R
,使 master 恢复 M
的状态。(就是最上面说的)。
5 回答2.9k 阅读
3 回答2.7k 阅读
3 回答976 阅读
322 阅读
如果commit少 cherry-pick 解决一个冲突 add continue 。。。然后再解决冲突 add continue。否则就rebase吧,后面也是 add continue 。冲突多没有好办法,只能一个个多解决。