【发布时间】:2014-08-04 16:40:56
【问题描述】:
我经常在开发过程中使用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
注意:我只在我的本地仓库中对未推送到公共仓库的提交进行 rebase。我不是在寻找有关最佳做法的建议。
【问题讨论】:
-
恐怕没有:(
-
正如 knittl 所说,没有内置任何东西。不过,您可以通过进行建议的重新排序然后运行一系列
git cherry-pick操作(在分离的 HEAD 上)来查看是否有任何这些操作导致冲突。如果您遇到冲突,那就是您的答案;如果没有,你的结果就是:将分支标签移动到最新分离的 HEAD,你的 rebase 就完成了。 (换句话说,就是去做,看看有没有冲突。)