如何在交互式git rebase期间检查冲突



我经常在开发过程中使用git rebase -i <ancestor>来重新排序提交,通过将相关的提交分组在一起来清理频繁的小提交。然而,我的重新排序有导致合并冲突的趋势,当一个较晚的块在一个重叠的较早的块之前被重新排序时。

是否有一种方法来评估在开始重置之前是否会发生冲突?

的例子:

$ git rebase -i 800adf8
# Interactive Rebase
pick 800adf8 initial commit
pick 2647ae9 content: add header       <--+
pick b0a2be6 content: add navbar          |   hunks overlap
pick 8b86f8a header: add stylesheet    <--+
pick 1da6209 content: add footer
pick 7d55152 header: add jquery
pick 515c410 content: add form

,

# After reorder
pick 800adf8 initial commit
pick 8b86f8a header: add stylesheet    <-- conflict
pick 7d55152 header: add jquery
pick 2647ae9 content: add header       <-- conflict
pick 1da6209 content: add footer
pick b0a2be6 content: add navbar
pick 515c410 content: add form

注意:我只在我的本地仓库中重基那些没有推送到公共仓库的提交。我不是在寻求最佳实践的建议。

有趣的是,mercurial也有类似的问题,结论与torek的评论相似:您需要模拟rebase并检查是否存在任何冲突。

这篇2010年的文章也有类似的建议:

查看master的修订历史,查找可能包含重大冲突或代表重要拐点的提交,并围绕它们选择您的下一个目标提交;

如果您有一堆简单的提交,您可能希望目标是大提交之前的最后一个这样的简单提交,例如。
如果你有一堆大而复杂的提交,你可能希望每个提交都有自己的目标/阶段,等等。

使用你对应用程序的了解。

最新更新