git 操作问题

描述下我的情况:
我从master分支切了一个f1分支,然后在f1分支上开发了若干个提交,再将f1 merge 到了master分支,然后突然发现f1上面bug太多,不应该merge master,所以我就使用命令 git revert -m 1 合并commitid,虽然将master的代码撤销到了合并f1之前的样子,但是我再在f1分支上将那些bug修复之后,准备再次合并到master分支,问题来了!!!合并的时候出现大量冲突,请问遇到这种情况一般怎么处理比较好?

阅读 2.2k
2 个回答

如果commit少 cherry-pick 解决一个冲突 add continue 。。。然后再解决冲突 add continue。否则就rebase吧,后面也是 add continue 。冲突多没有好办法,只能一个个多解决。

在 master 上把 revert 再 revert 一下,然后 merge 。


master --- A ---- M --- R ---
                 /
  f1   --- B ---/---- FIX

M 是你 merger 的 commit, R 是你 revert 的 commit 。 FIX 是你在 f1 上的修复。

再你最终 merge 的时候,RFIX 有一个共同的祖先是 B 。而 R 相当于把 B 的修改“复原”了,而 FIXB 的修改还在。于是很容易冲突。

(即使没有冲突,直接 merger 之后 master 上也没有 B 的修改,不是期望的结果)

解决的话可以在 master 上在 revert 一下 R ,使 master 恢复 M 的状态。(就是最上面说的)。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进