如何正确使用Git cherry-pick

时间:2018-02-06 16:35:25

标签: git cherry-pick

我知道我们使用cherry-pick将特定提交的内容提取到当前分支中。

我将解释一个情况,需要一些帮助才能完全理解樱桃挑选,并确保这是解决问题的正确方法。

想象一下,我们有两个开发人员:Bob和Tom,他们在同一个文件上工作。

鲍勃有一个固定的分支,已经投入生产 汤姆有一些鲍勃没有的未来发行工作 鲍勃也可能有一些汤姆没有的作品 鲍勃想要汤姆的工作,但他需要逐个获得并在发送到生产之前对其进行测试。 不会'樱桃挑选'覆盖鲍勃的工作吗?如果是,在这种情况下进行的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

  

我知道我们使用cherry-pick将特定提交的内容导入我们当前的分支。

...

  

不会'樱桃挑选'覆盖鲍勃的工作吗?

可能有助于理解,cherry-pick 从另一次提交中带来“内容”。它将更改应用于另一个提交与其父提交之间的修补程序。来自文档(https://git-scm.com/docs/git-cherry-pick):

  

应用 引入的某些现有提交所带来的更改

(重点补充)。

因此,就像合并预计不会覆盖Bob的工作一样,预计不会覆盖Bob的工作。樱桃选择引入的变化可能会与Bob的工作中的发生冲突,并且必须得到解决。

更大的潜在问题是,事实上,git不会记住它为Bob创建的提交与Tom的原始提交有关。如果你最终通过在另一个之上重新组合分支来组合分支,那么它可能没问题 - 因为rebase将比较“补丁ID”值以决定它是否应该跳过重放给定的提交。如果您最终通过合并将它们组合在一起,则可能必须解决无意义的冲突。

相关问题