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

分支被误合并后,如何重放未纳入MR的提交至新分支?

批量迁移提交到新分支的高效方法

不用手动逐个cherry-pick,可以用*git rebase --onto*命令一次性完成提交重放,步骤如下:

  1. 拉取远程最新状态,确保本地能获取到扁平化后的origin/A和最新的master:

    git fetch origin
    
  2. 基于最新的master创建新分支(用于后续提交新MR):

    git checkout -b new-A origin/master
    
  3. 把本地分支A中,所有在origin/A之后的提交,批量重放到新分支new-A上:

    git rebase --onto new-A origin/A A
    

    这个命令的逻辑是:提取A分支里从origin/A之后的所有提交,将它们依次应用到new-A分支的顶端,自动保持提交顺序。

  4. 处理可能出现的冲突:

    • 遇到冲突时,Git会暂停操作,手动修改冲突文件的内容
    • 解决冲突后执行git add <冲突文件>,然后继续完成重放:
      git rebase --continue
      
    • 如果某提交无需保留,可执行git rebase --skip跳过该提交
  5. 完成后,A分支的提交已基于master重新排列,你可以选择直接推送该分支作为新MR,或者推送new-A分支到远程:

    # 推送A分支为新的MR分支(若原远程A分支状态混乱,建议用新名称)
    git push origin A:fresh-A-branch
    # 或者直接推送new-A分支
    git push origin new-A
    

替代方案:批量cherry-pick

如果更熟悉cherry-pick的逻辑,也可以用批量命令一次性迁移所有目标提交:

git cherry-pick origin/A..A

执行前确保当前处于基于master创建的新分支上,命令会把origin/A到A之间的所有提交按顺序应用到当前分支,冲突处理方式与rebase一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 04:10:15