50

当我这样做git rebase branch1时,我branch1-local会遇到冲突。我解决了冲突,git add <conflicted-add>然后git rebase --continue按照 git 的要求做。之后应用新的提交。新的冲突出现了。但是在同一个文件中又是同样的冲突。我再做一次,git addgit rebase --continue,然后一切都重复一遍,直到我对每个被重新基于的提交重复这个。

为什么 rebase 让我一遍又一遍地重做相同的冲突解决方案?

4

2 回答 2

14

您想要的是git rerere为您记录冲突解决方案。我所见过的最好的介绍现在是Git Book,工具一章的一部分。实际上,当您执行变基时,您最终会像以前一样停止,但您只需检查合并冲突是否仍然解决,然后git add继续。

于 2012-12-11T18:32:30.343 回答
4

你不应该一遍又一遍地遇到同样的冲突。Rerere 不会在这里为您提供帮助。它只是意味着您尝试重放提交的代码库是如此不同,以至于每个提交都需要您的帮助来调整它。这是赞成合并而不是变基的原因之一。在我看来,rebase 应该只在必要时使用,而不是你常规工作流程的一部分。Rerere 将在合并/重置类型的工作流程中提供更多帮助。这是我避免变基的工作流程:http: //dymitruk.com/blog/2012/02/05/branch-per-feature/

减轻一些痛苦的一种方法是使用像 Beyond Compare 这样的智能合并程序。它具有语法意识,可以解决很多 Git 会(理所当然地)拒绝为你做的冲突。很多时候,这些工具在被调用时甚至不会打开它们的 UI、解决问题并允许您的git mergetool命令继续处理下一个冲突。请记住将“信任合并工具退出代码”设置为 true。

于 2012-12-11T19:33:51.727 回答