如何正确使用Git cherry-pick
How to properly use Git cherry-pick
我知道我们使用 cherry-pick
从特定提交中获取内容到我们当前的分支中。
我将解释一种情况并需要一些帮助以完全理解 cherry-pick 并确保这是解决我的问题的正确方法。
假设我们有两个开发人员:Bob 和 Tom,他们处理相同的文件。
Bob 有一个已经投入生产的实体分支。
Tom 有一些 Bob 没有的未来版本的作品。
Bob 可能还有一些 Tom 没有的工作。
Bob 想要 Tom 的工作,但他需要在发送到生产之前一件一件地进行测试。
'cherry-pick' 不会覆盖 Bob 的工作吗?如果是,在这种情况下正确的处理方法是什么?
I know that we use cherry-pick to get the content from a specific commit into our current branch.
...
Wouldn't 'cherry-pick` overwrite Bob's work?
这可能有助于理解 cherry-pick 不会 从另一个提交中带来 "content"。它应用 changes 等于另一个提交与其父提交之间的补丁。来自文档 (https://git-scm.com/docs/git-cherry-pick):
Apply the changes introduced by some existing commits
(强调已添加)。
所以就像合并不会覆盖 Bob 的工作一样,cherry-picking 也不会覆盖 Bob 的工作。可能是 cherry-pick 引入的更改会与 Bob 工作中的更改冲突,并且必须解决。
更大的潜在问题是 git 在事后不会记住它为 Bob 创建的提交与 Tom 的原始提交相关。如果您最终将通过在另一个之上重新设置分支来组合分支,那么它可能没问题 - 因为重新设置会比较 "patch ID" 值来决定是否应该跳过重放给定的提交。如果您最终通过合并将它们组合在一起,您可能必须解决没有意义的冲突。
我知道我们使用 cherry-pick
从特定提交中获取内容到我们当前的分支中。
我将解释一种情况并需要一些帮助以完全理解 cherry-pick 并确保这是解决我的问题的正确方法。
假设我们有两个开发人员:Bob 和 Tom,他们处理相同的文件。
Bob 有一个已经投入生产的实体分支。
Tom 有一些 Bob 没有的未来版本的作品。
Bob 可能还有一些 Tom 没有的工作。
Bob 想要 Tom 的工作,但他需要在发送到生产之前一件一件地进行测试。
'cherry-pick' 不会覆盖 Bob 的工作吗?如果是,在这种情况下正确的处理方法是什么?
I know that we use cherry-pick to get the content from a specific commit into our current branch.
...
Wouldn't 'cherry-pick` overwrite Bob's work?
这可能有助于理解 cherry-pick 不会 从另一个提交中带来 "content"。它应用 changes 等于另一个提交与其父提交之间的补丁。来自文档 (https://git-scm.com/docs/git-cherry-pick):
Apply the changes introduced by some existing commits
(强调已添加)。
所以就像合并不会覆盖 Bob 的工作一样,cherry-picking 也不会覆盖 Bob 的工作。可能是 cherry-pick 引入的更改会与 Bob 工作中的更改冲突,并且必须解决。
更大的潜在问题是 git 在事后不会记住它为 Bob 创建的提交与 Tom 的原始提交相关。如果您最终将通过在另一个之上重新设置分支来组合分支,那么它可能没问题 - 因为重新设置会比较 "patch ID" 值来决定是否应该跳过重放给定的提交。如果您最终通过合并将它们组合在一起,您可能必须解决没有意义的冲突。