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

Git重复合并提交问题:如何将Release分支修复合并到受保护的master分支?

解决Git合并时出现重复提交的问题

嘿,我来帮你搞定这个重复提交的麻烦!你遇到的问题大概率是因为Release/v1.0分支和master分支的历史有重叠——比如之前已经合并过部分提交,或者分支路径有交叉,直接用merge就会把重复的提交记录带进来。下面给你两种靠谱的解决方法:

方法一:用交互式Rebase整理提交(适合需要合并多个提交但去重的场景)

这种方式可以让你精准筛选需要合并到master的提交,剔除重复的部分:

  • 先切回你的合并分支:
    git checkout merge-to-master
    
  • 把分支重置到远程master的最新状态,确保起点正确:
    git reset --hard origin/master
    
  • 启动交互式Rebase,以Release/v1.0为基准整理提交:
    git rebase -i origin/Release/v1.0
    
    这时候会弹出一个文本编辑器,里面列出了Release/v1.0上的所有提交。把不需要的提交(重复的那些)前面的pick改成drop,只保留你那个bug修复的提交。保存退出编辑器。
  • 如果遇到冲突,先手动解决冲突,然后执行:
    git rebase --continue
    
    重复这个步骤直到Rebase完成。
  • 最后把整理好的分支推送到远程(如果之前已经推过,需要强制推送,注意这个分支只有你在用才这么做):
    git push -f origin merge-to-master
    
    之后就可以正常提交PR到master了。

方法二:用Cherry-Pick只挑选目标提交(适合只需要合并单个bug修复的场景)

如果你的bug修复是单个独立提交,用这个方法更直接,完全不会引入重复提交:

  • 先找到Release/v1.0上那个bug修复提交的哈希值:
    git log origin/Release/v1.0
    
    在输出里找到对应提交的一串字符(比如a1b2c3d),复制下来。
  • 切回你的合并分支并重置到远程master最新状态:
    git checkout merge-to-master && git reset --hard origin/master
    
  • 把目标提交“摘”到当前分支:
    git cherry-pick a1b2c3d
    
  • 如果有冲突,解决后执行:
    git cherry-pick --continue
    
  • 推送分支(需要强制的话用git push -f),然后提交PR即可。

注意事项

  • 强制推送merge-to-master前,一定要确认这个分支只有你自己在使用,避免影响其他人的工作。
  • 如果你之后还要维护Release/v1.0分支,推荐用cherry-pick,不会打乱Release分支的历史;如果是想把Release/v1.0的所有新提交都合并到master且去重,rebase更合适。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:40:57