git - cherry-pick - 如何操作 / 为什么要用

10

问题:你想测试某人开发的一个功能,但它只存在于一个过时的远程分支中。

来源

  1. cherry-pick 如何解决这个问题?
  2. 为什么不使用 git am 或 git apply?
3个回答

6
问题:您想测试某人开发的功能,但它只存在于一个过时的远程分支中。
如果您合并或变基,则可能会得到一堆旧的更改,可能会产生冲突。使用cherry picking,您可以选择一个更改集,并将其作为新提交重播到另一个分支上。
如果您只想将一个提交放到另一个分支上而不带有其历史记录,则这很有用。
最好使用-x选项,以便提交消息包含从哪里挑选的注释。
为什么不使用git am或git apply?
因为git apply用于应用补丁(文件),而git am用于应用一系列补丁。git cherry-pick应用提交 - 即来自您自己的存储库的提交,而不是您从其他存储库导入的提交。

4
git help cherry-pick
git-cherry-pick-应用已有提交所引入的更改.
给定一个或多个现有的提交,为每个提交应用其引入的更改,记录一个新的提交。这需要你的工作树是干净的(没有来自HEAD提交的修改)。
因此,当您“cherry-pick”一个提交时,“git”会获取该提交的更改(其“diff”)并尝试将其应用于当前工作目录,创建一个等同于正在进行“cherry-pick”的提交的新提交。
这是一种在不同历史线上重新执行其他提交更改的方法。
除了获取更改外,“cherry-pick”还保留原始提交的信息,例如作者和其他信息。
最后,“cherry-pick”可以接收一组要应用的提交,此时它将像按时间顺序(从旧到新)逐个“cherry-pick”它们一样操作。

2
问题: 您想测试某人开发的一个功能,但它只存在于一个远程分支中,而该分支已经过时。
它解决了这个问题,因为:
- 您不想合并旧分支,其中包括在当前开发状态下不再相关的提交。 - 您不想将您的分支重新基于旧分支,以获取那一个提交。 - 您不必将您的分支合并回那个旧分支。
最后一点很重要,因为 cherry-pick 的第一个缺点是引入了重复提交。但在您的情况下,这并不重要。
另一个缺点是,您正在 cherry-pick 的提交可能基于先前提交(旧分支的提交)具有功能依赖性。换句话说,它的代码之所以能够工作,是因为其他较早提交的代码(未被 cherry-pick)。这可能更难以检测。

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