Cherry Pick提交订单

时间:2012-04-07 19:29:28

标签: git merge-conflict-resolution git-cherry-pick

这可能是一个天真的git问题,但现在是:

在执行pull-request之前,我通常会从上游的最新提交中创建一个新分支,然后从我的开发分支中选择重要的提交。然后从我的新分支向远程存储库发出pull-request。

但我讨厌合并冲突(尽管git mergetool在发生时会有很大的帮助)。我怀疑这些冲突是由樱桃的顺序引起的。我通常会从最旧的提交到最新提交的一系列提交。这是正确的方法吗?或者提交命令对git无关紧要?

在挑选樱桃时是否还有其他技巧可以最大限度地减少合并冲突?

2 个答案:

答案 0 :(得分:7)

你绝对应该按顺序挑选提交。如果不这样做,它们可能无法应用 - 假设一个提交添加了foo.c,而下一个提交会修改它。显然,它们不会失灵。一般来说,即使它不那么明显,也有一些合乎逻辑的开发流程,你不想搞砸它。也就是说,我不确定你为什么要手动创建一个分支和挑选;它等同于(只要你没有跳过提交)到git pull --rebase

如果您在挑选时遇到合并冲突,则更多的迹象表明您的开发过程并不理想。这意味着您正在开发分支中处理的事情也在上游进行更改。您可以通过不处理其他人正在处理的相同代码来帮助自己,或者在开发期间更频繁地从上游拉(可能再次pull --rebase),而不是等到最后。< / p>

答案 1 :(得分:3)

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

您的工作流程很奇怪。你应该git rebase你的分支在上游分支的内容之上重建它,或者只是git merge上游分支进入你的分支。这避免了挑选工作,实际上让git有更好的机会自动解决冲突。