如何 cherry-pick 多个提交

cherry-pick 多个提交:连续的用范围 git cherry-pick A^..B(含 A)或 A..B(不含 A);不连续的逐个列出 git cherry-pick A B C。冲突时解决后 git cherry-pick --continue。

最佳实践
Git 提交历史与版本恢复示意

连续一段提交用范围:git cherry-pick <起点>^..<终点>(含起点;写 起点..终点 则不含起点)。不连续的提交直接列哈希:git cherry-pick A B C,按列出顺序逐个应用。

连续范围

# 把 feature 分支上最近 3 个提交搬到当前分支
git cherry-pick feature-x~3..feature-x

# 明确范围(包含起点提交本身要用 ^)
git cherry-pick a1b2c3d^..e4f5g6h

不连续提交

git cherry-pick a1b2c3d f7g8h9i

按顺序应用,中间任何一个冲突都会暂停。

冲突处理

# 解决冲突文件后
git add <冲突文件>
git cherry-pick --continue
# 放弃整个序列
git cherry-pick --abort
# 跳过当前这个
git cherry-pick --skip

实用选项

  • -n(--no-commit):只应用改动不提交,多个提交攒成一个;
  • -x:提交信息里追加来源提交哈希,便于追溯((cherry picked from ...));
  • -e:应用时编辑提交信息。

常见问题(FAQ)

Q:cherry-pick 和 merge 怎么选?

merge 带走整个分支的全部历史;cherry-pick 只摘指定提交(会产生新哈希)。热修复回合到旧版本分支、只要某几个提交时用 cherry-pick;完整合并特性用 merge。

Q:同一个提交 cherry-pick 两次会怎样?

会产生内容重复的两个提交;之后两分支合并时可能报"重复改动"冲突。尽量避免,或在提交信息里注明来源(-x)方便排查。

Q:merge 提交能 cherry-pick 吗?

可以但要指定主线:-m 1(以第一个父提交为基准)。一般不建议摘 merge 提交,改摘其内部的具体提交更清晰。

参考资料

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

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

立即开始

选择观测云版本

代码托管平台