如何轻松地在 git 中的 rebase 末尾修复冲突的 rebase 分支?
例如,我在一个功能分支上,并且在主分支中有 2 次提交用于 rebase。
第一次提交会产生冲突,但是如果 rebase 将两个提交结合在一起,那么在第二次提交之后就不会发生冲突。
那么如何将它作为一个整体重新定位,而不是一个一个地重新定位它并解决两次冲突呢?
我认为它必须在某个地方回答,但我找不到任何东西,因为所有类似的问题标题都含糊不清。
如何轻松地在 git 中的 rebase 末尾修复冲突的 rebase 分支?
例如,我在一个功能分支上,并且在主分支中有 2 次提交用于 rebase。
第一次提交会产生冲突,但是如果 rebase 将两个提交结合在一起,那么在第二次提交之后就不会发生冲突。
那么如何将它作为一个整体重新定位,而不是一个一个地重新定位它并解决两次冲突呢?
我认为它必须在某个地方回答,但我找不到任何东西,因为所有类似的问题标题都含糊不清。
最好的方法是先压缩两个提交(通过使用交互式rebase),然后在 master 上 rebase。
通过交互式 rebase 压缩最后 2 个提交:
git rebase -i head~2
为第二次提交选择壁球(或修复)
然后在 master 上变基
git rebase master
在重新定位到 master之前,您应该压缩有问题的提交。通过基于最近的共同祖先的交互式变基来执行此操作:
git rebase -i $(git merge-base master HEAD)
这样,组合提交,当表示为补丁时,可以master
干净地应用于:
git rebase master
您尝试应用于 master 的原始第一个提交将发生冲突,简单明了。一旦完成,您必须能够检查该“状态”,因此 Git 可以让您解决冲突。您的基本问题归结为“我如何应用包含冲突的补丁而不产生冲突”,这显然是您无法做到的。通过首先压缩提交,您无需应用冲突的提交。