You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将分支A上已commit未push的改动迁移到分支B并保留B原有内容

解决方案

你可以通过以下两种常用方案实现需求,两种方案都不会修改分支B的原有提交记录,仅追加你在分支A上的新增改动:

方案1:使用cherry-pick(最适合单条/少量commit的场景)

  • 首先确认你已经切换到了正确的分支B,可执行git branch验证当前所在分支
  • 执行git log branchA查看分支A上你要迁移的commit的哈希值,记录下前7位即可
  • 执行git cherry-pick <你刚才记录的commit哈希值>,即可把这条commit完整复制到当前的分支B上
  • 如果出现冲突,解决冲突后执行git add <冲突文件>,再执行git cherry-pick --continue即可完成迁移
  • 如果你需要清除分支A上的错误commit,切换回分支A后执行git reset --hard HEAD~1即可删除最近1条未push的commit(注意操作前确认没有未保存的改动)

方案2:使用rebase(适合多条连续commit的场景)

如果你在分支A上有N条连续的commit需要整体迁移,用rebase效率更高:

  • 保持当前在分支B上,执行git rebase --onto B A~N A,其中N是你要迁移的commit的数量
  • 迁移完成后切换回分支A,同样可以执行git reset --hard HEAD~N清理掉分支A上的错误提交

注意:两种方案执行完成后,分支B上只会新增你在分支A上的改动,分支B原有的所有内容和提交记录都不会被修改。如果后续你要提交改动,直接在分支B上执行git push即可。

内容的提问来源于stack exchange,提问作者Kabaner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 16:24:01