如何只合并某个特定提交

合并单个提交用 cherry-pick:git cherry-pick <提交哈希>,把该提交的改动以新提交应用到当前分支。多个连续提交用 A^..B 范围,加 -n 只应用不提交。

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

用 git cherry-pick <提交哈希>:把那个提交的改动精确应用到当前分支,生成一个新提交。merge 是"整个分支全要",cherry-pick 是"只要这一个"。

操作

git checkout main                    # 切到目标分支
git log feature-x --oneline          # 找到要的提交哈希
git cherry-pick a1b2c3d

常用选项

git cherry-pick -n a1b2c3d   # 只应用改动不提交(再手动整合提交)
git cherry-pick -x a1b2c3d   # 提交信息追加来源哈希,便于追溯
git cherry-pick A^..B        # 连续一段提交

冲突处理

# 解决冲突文件后
git add <文件>
git cherry-pick --continue
# 不想搞了
git cherry-pick --abort

注意

  • cherry-pick 的是该提交的改动,不是整个文件状态——目标分支上下文不同可能产生冲突;
  • 原提交和新提交哈希不同,之后两分支整体合并时同一份改动会再次"相遇",可能报重复冲突;
  • 依赖链长的提交(它依赖前面提交的改动)单独摘过来可能编译不过,摘之前评估依赖。

常见问题(FAQ)

Q:和 rebase 有什么区别?

rebase 移动"一串"提交到另一个基点;cherry-pick 复制指定提交。要整个分支搬家用 rebase,挑个别提交用 cherry-pick。

Q:merge 提交能 cherry-pick 吗?

需要 -m 1 指定以哪个父提交为主线。一般不摘 merge 提交,摘它内部真正的功能提交。

Q:跨仓库能 cherry-pick 吗?

可以:把对方仓库加为 remote(git remote add fork <url>),fetch 后直接 cherry-pick 其提交哈希。

参考资料

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

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

立即开始

选择观测云版本

代码托管平台