我正在将上游更改合并到我的项目中,最近有很多提交产生了很多合并冲突。尝试一次解决所有问题是没有意义的。
如何找出哪些提交会产生冲突?以下任何一种都是可以接受的:
答案 0 :(得分:16)
您可以尝试git imerge:这将逐个应用您的提交,让您有机会逐步(意味着你可以启动一个rebase,打断它,稍后再恢复!)。
您可以在此处看到Incremental merge vs. direct merge vs. rebase之间的比较。
答案 1 :(得分:5)
Michael Haggerty还有一个名为git-mergemate
的工具,它有一个find-conflict
命令:
git-mergemate find-conflict BRANCH1..BRANCH2
使用二分法确定
BRANCH2
上最早的提交 合并到BRANCH1
时会导致冲突。实际上不 保留任何合并。
git-mergemate find-conflict BRANCH1...BRANCH2
使用二分法找到一对最早的提交(一个来自 每个分支)不干净地合并。实际上不保留 任何合并。
git imerge
可以用来进行增量合并并解决冲突,尽管它在find-conflicts
中没有等效git-mergemate
。
答案 2 :(得分:2)
您是否有任何理由不想仅使用rebase
(非交互式)同步上游分支中的更改?如果每次提交都存在冲突,它将停止,然后您可以在解决时恢复rebase。这就像增量合并,它内置于Git中,不需要外部插件/工具:
git fetch <remote>
git rebase <remote>/<upstream-branch>
# Conflict on commit X, resolve conflict, then continue the rebase
git rebase --continue
注意,当然,重新定位本地分支将改变其提交的sha ID。如果您已经将要重新绑定的提交推送到远程,那么您需要强制推送新提交以覆盖旧提交,如果您与其他人共享您的分支,这可能会造成潜在问题。您可以在以下方面了解有关这些问题的更多信息: