如何把提交从一个分支复制到另一个分支

复制提交到其他分支用 cherry-pick:切到目标分支后 git cherry-pick <提交哈希>;连续一段用 A^..B 范围;整个分支都复制用 merge 或 rebase。cherry-pick 产生新哈希,原分支不受影响。

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

用 git cherry-pick:切到目标分支,执行 git cherry-pick <提交哈希>,该提交的改动会以一个新提交落到当前分支。连续的一段用 git cherry-pick A^..B,不连续的列多个哈希。

基本流程

git checkout release-1.2           # 1. 切到目标分支
git log feature-x --oneline        # 2. 找到要复制的提交哈希
git cherry-pick a1b2c3d            # 3. 摘过来
git push

复制多个提交

git cherry-pick a1b2c3d^..e4f5g6h   # 连续范围(含起点)
git cherry-pick a1 b2 c3            # 不连续的多个
git cherry-pick -n a1 b2            # -n:不提交,攒成一个提交

和其他方式怎么选

需求 命令
复制个别提交 cherry-pick
复制整个分支 merge / rebase
复制单个文件 git checkout 分支 -- 路径
复制未提交的改动 stash + pop 或 patch

注意事项

  • cherry-pick 产生新提交(哈希不同),原分支原封不动;
  • 同一提交摘到多个分支后,将来这些分支合并时可能出现"重复改动"冲突;
  • 摘 merge 提交要加 -m 1 指定主线,一般不推荐。

常见问题(FAQ)

Q:cherry-pick 冲突了怎么办?

解决冲突文件 → git add → git cherry-pick --continue;放弃整个操作用 --abort,跳过当前用 --skip。

Q:能不能保留原提交的作者信息?

默认就保留作者(author)和原提交时间,committer 变为你。-x 参数还会在提交信息里追加来源哈希,方便追溯。

Q:复制过去后又想撤掉?

目标分支上 git revert <新提交哈希> 或没推送时 git reset --hard HEAD^。

参考资料

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

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

立即开始

选择观测云版本

代码托管平台