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

误在已合并至master的abc分支提交本地代码,如何迁移至master?

把错误分支的本地提交迁移到最新Master的解决方案

这事我熟!你现在的情况是本地abc分支有两次未推送的提交,而远程abc已经合并到master,且master还有新更新。要把这两次提交转移到当前master的HEAD上,用git cherry-pick是最直接的方案,步骤给你列清楚:

  • 第一步:获取目标提交的哈希值
    先确保你在abc分支上(如果不在,执行git checkout abc),然后运行:

    git log --oneline
    

    这个命令会显示简短的提交记录,你需要记下那两次本地提交的哈希值(比如看起来像a1b2c3和d4e5f6的字符串,注意要按提交的先后顺序,先提交的在前)。

  • 第二步:切换到最新的master分支
    切换到master并拉取远程最新的更新,确保本地master和远程同步:

    git checkout master
    git pull origin master
    
  • 第三步:将目标提交应用到master
    用cherry-pick把刚才记下的两个提交依次应用到当前master上:

    git cherry-pick [第一个提交哈希] [第二个提交哈希]
    

    注意:如果cherry-pick过程中出现冲突,Git会暂停操作提示你解决冲突。解决完冲突后,执行git add .标记冲突已解决,然后运行git cherry-pick --continue继续完成操作;如果想跳过某个提交,用git cherry-pick --skip;如果要彻底放弃cherry-pick,用git cherry-pick --abort。

  • 第四步:验证并推送(可选)
    完成cherry-pick后,用git log检查提交记录是否正确,确认没问题后可以推送到远程master:

    git push origin master
    
  • 第五步:清理本地abc分支(可选)
    既然远程abc已经合并到master,且你需要的提交已经迁移,本地abc分支可以删除:

    git branch -D abc
    

替代方案:用rebase迁移提交

如果abc分支上除了这两次提交,其余历史都已经合并到master,你也可以用rebase来迁移:

  1. 找到abc分支上最后一个已经合并到master的提交哈希(比如用git log --oneline master..abc可以看到abc上独有的提交,取倒数第三个的哈希)
  2. 运行:
    git rebase --onto master [上述哈希] abc
    
  3. 切换到master并合并abc分支:
    git checkout master
    git merge abc
    

这个方案适合需要迁移连续多个提交的场景,但cherry-pick更适合你这种明确知道要迁移哪两个提交的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:17:46