如何正确使用Git cherry pick

如何正确使用Git cherry pick,git,cherry-pick,Git,Cherry Pick,我知道我们使用cherry pick将特定提交的内容获取到当前分支中 我将解释一种情况,需要一些帮助来完全理解cherry pick,并确保这是解决我问题的正确方法 假设我们有两个开发人员:Bob和Tom,他们处理相同的文件 Bob拥有一家已投入生产的可靠分支机构。 Tom有一些Bob没有的未来版本的工作。 鲍勃可能还有一些汤姆没有的工作。 鲍勃想要汤姆的作品,但他需要一个接一个地拿到,并在投入生产前进行测试。 “cherry pick”不会覆盖Bob的作品吗?如果是,在这种情况下,正确的处理方

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

我将解释一种情况,需要一些帮助来完全理解cherry pick,并确保这是解决我问题的正确方法

假设我们有两个开发人员:Bob和Tom,他们处理相同的文件

Bob拥有一家已投入生产的可靠分支机构。
Tom有一些Bob没有的未来版本的工作。
鲍勃可能还有一些汤姆没有的工作。
鲍勃想要汤姆的作品,但他需要一个接一个地拿到,并在投入生产前进行测试。 “cherry pick”不会覆盖Bob的作品吗?如果是,在这种情况下,正确的处理方法是什么

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

“cherry pick”不会覆盖Bob的作品吗

这可能有助于理解cherry pick不会从另一个提交中带来“内容”。它在另一个提交和其父提交之间应用等同于补丁的更改。从文档()中:

应用一些现有提交引入的更改

(重点补充)

所以就像合并不会覆盖Bob的工作一样,cherry picking也不会覆盖Bob的工作。可能是cherry pick引入的变更会与Bob工作中的变更发生冲突,这必须得到解决


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

您应该为每个步骤设置一个单独的分支:生产、测试、功能或开发(如有必要)。您应该将整个功能分支合并到测试中,或者根据需要重新调整。是的,
cherry pick
将覆盖Bob的工作,但不要担心……Git会在出现冲突时通知您,就像您使用
merge
rebase
时一样。Production=master branch。将本地功能分支推到远程并要求他人测试是否错误/错误?为什么?我们有一个服务器只用于测试。