2012-04-07 63 views
3

这可能是一个天真的git的问题,但在这里它是:Cherrypick提交订单

做一个拉请求之前,我通常在上游和樱桃挑重要的提交创建最新提交一个新的分支我的开发分支。然后从我的新分支向远程存储库发出拉取请求。

但我讨厌合并冲突(尽管git mergetool在它们发生时有很多帮助)。我怀疑这些冲突是由樱桃的命令造成的。我通常挑选一组从最老到最新的提交提交。这是正确的方法吗?或者提交命令对git无关紧要?

是否有任何其他的技巧,以尽量减少樱桃采摘过程中的合并冲突?

回答

7

你绝对应该按顺序挑选承诺。如果你不这样做,它们可能不适用 - 想象一个提交会添加foo.c,而下一个提交会修改它。很明显,他们不会失去工作。总的来说,即使不是那么明显,也有一些合乎逻辑的发展流程,你不想惹它。这就是说,我不知道你为什么手动创建分支和樱桃采摘;它与git pull --rebase等效(只要您不跳过提交)。

如果您在采摘樱桃时遇到合并冲突,这更像是您开发过程不理想的标志。这意味着你在开发分支中工作的东西也在上游改变。您可以通过不使用其他人正在使用的相同代码或者在开发过程中更频繁地从上游拉动(可能是pull --rebase)来帮助自己,而不是等到最后。

+0

非常感谢您的帮助。 – systemsfault 2012-04-07 20:32:58

2

绝对地,提交订单很重要。如果提交B修改了首次在提交A中引入的内容,那么在应用提交A之前,您无法应用提交B.

您的工作流程很奇怪。您应该或者git rebase您的分行在上游分行的内容之上重新构建它,或者将git merge上游分行重新构建到您的分行。这样可以避免挑选工作,并且让git自动解决冲突的机会更大。