我经常使用git rebase -i <ancestor>
在开发期间重新排序提交,以通过将相关提交分组在一起来清理我经常提交的小提交。然而,当一个后来的大块重组在一个重叠的早期大块之前,我的重新排序会导致合并冲突。
有没有办法在启动rebase之前评估特定订单是否会发生冲突?
示例:
$ 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
注意:我只在我的本地仓库中修改未被推送到公共仓库的提交。我不是在寻找有关最佳实践的建议。
答案 0 :(得分:1)
有趣的是,有一个similar question for mercurial,结论类似于torek&#39; comment:你需要模拟rebase并检查是否存在任何冲突
这2010 article有类似的建议:
查看master的修订历史记录,查找可能包含重大冲突或代表重要拐点的提交,并选择围绕它们的下一个目标提交;
如果你有一堆简单的提交,你可能希望目标在大的提交之前是最后一次这样简单的提交。例如。
如果你有一堆大毛茸茸的提交,你可能希望每个提交都是自己的目标/阶段等。使用您对该应用的了解。