Cherrypick提交顺序

13

这可能是一个天真的git问题,但是我想问的是:

在做pull-request之前,我通常会从上游的最新提交中创建一个新的分支,并从我的开发分支中挑选重要的提交进行cherry-pick。然后从我的新分支向远程仓库发起pull-request。

但是我讨厌合并冲突(尽管在发生冲突时git mergetool很有帮助)。我怀疑其中一些冲突是由于cherrypicks的顺序引起的。我通常会按照最旧到最新的提交顺序选择一组提交进行cherry-pick。这是正确的方法吗?或者提交顺序对于git来说不重要吗?

还有没有其他技巧可以在进行cherry-picking时最小化合并冲突?

2个回答

12
你应该按顺序挑选提交。如果不按顺序,它们可能无法应用——想象一下一个提交添加了foo.c,而下一个提交修改了它。显然,它们不能乱序执行。通常情况下,即使不是那么明显,也有一些逻辑开发流程,你不希望干扰它。话虽如此,我不确定为什么你要手动创建分支并进行挑选;它等效于(只要不跳过提交)使用 git pull --rebase
如果在挑选提交时出现合并冲突,这更说明你的开发过程不太理想。这意味着您在开发分支上正在处理的内容也在上游进行更改。您可以通过在开发过程中要么不处理其他人正在处理的相同代码,要么更频繁地从上游拉取(可能再次使用pull --rebase)来帮助自己避免这种情况。

4
绝对的,提交顺序很重要。如果提交B修改了在提交A中首次引入的内容,那么只有在提交A被应用后才能应用提交B。
您的工作流程很奇怪。您应该通过git rebase命令将分支重建在上游分支的内容之上,或者只需将上游分支合并到您的分支中。这避免了挑选工作,并且实际上使git自动解决冲突的机会更大。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接