什么是 Git 的 cherry-pick

cherry-pick 是把另一个分支上的指定提交"摘"到当前分支:git cherry-pick <哈希>,改动会以新提交应用。适合热修复回合、跨分支搬个别提交;会产生新哈希,滥用会让历史难追溯。

最佳实践
Git 分支协作与合并示意

cherry-pick(摘樱桃)= 从别的分支挑指定的提交,把它的改动复制应用到当前分支。 merge 是整个分支都要,cherry-pick 是"只要这一个"。

基本用法

git checkout release-1.2
git cherry-pick a1b2c3d          # 把 main 上那个修复摘过来

典型场景

  • 热修复回合:main 上修的 bug 要同步到 release 分支,但 main 还有一堆不该进 release 的新功能——cherry-pick 只摘修复;
  • 摘取别人的提交:同事的实验分支里有个工具函数你想先用;
  • 提交错了分支:提交到 main 的功能提交摘到 feature 分支(再把 main 上的 reset 掉)。

要点

  • 摘过来的是改动(diff),生成新哈希的提交——与原标题相同但不是同一个提交;
  • 连续一串用 git cherry-pick A^..B;
  • 冲突处理和 merge 一样:解决 → add → git cherry-pick --continue。

常见问题(FAQ)

Q:cherry-pick 会导致重复提交吗?

会。同一改动以不同哈希存在于两个分支,之后两分支合并时 Git 通常能自动识别相同改动跳过,但历史里确实有两条记录。能 merge 就别滥用 cherry-pick。

Q:和 rebase 有什么区别?

rebase 把一串提交"移动"到新基点(原位置不再保留引用);cherry-pick 是"复制"指定提交,原分支不动。

Q:摘取时想改提交信息?

加 -e 进入编辑器;-x 会在信息里追加 "(cherry picked from ...)" 来源记录,推荐加上便于追溯。

参考资料

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台