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

如何移除PR中重复的merge branch master提交记录

问题根因

PR里出现重复提交,几乎都是同步上游代码时的操作习惯问题:

  • 你的feature分支是从较早版本的主分支切出来的,之后主分支进了新提交,你本地同步主分支更新时,git pull默认走merge逻辑,会自动生成一条合并提交;如果你多次在本地分支、远端feature分支、主分支之间来回merge,就会生成一堆内容完全一致、但commit hash不同的重复提交,堆在PR记录里
  • 还有种高频场景:你本地提交后push被拒,没有做变基同步,直接执行merge把远端分支的提交和本地提交揉到一起,也会生成重复记录
  • 少数情况是你直接复制代码文件夹重新建分支提交,没走Git的分支操作逻辑,原有commit的hash变了,Git会把这些内容识别成全新的提交,也会出现重复

问题内的重复提交记录示例:
提交记录示例

解决方法

根据你当前的进度选对应方案就行:

还没提交PR,本地/远端feature分支已经有重复提交

用交互式变基清理提交历史,操作步骤:

  1. 先切到本地主分支(分支名一般是main或master)拉取最新远端代码:git checkout main && git pull
  2. 切回你的feature分支,执行交互式变基:git rebase -i main
  3. 此时会弹出文本编辑界面,列出来当前feature分支比主分支多出来的所有提交:把重复提交、没用的merge提交前面的pick改成s(是squash的缩写,代表把这条提交合并到上一条相邻提交),完全多余的无效提交可以直接删掉整行
  4. 保存退出编辑页后,会再弹出提交信息编辑界面,删掉重复的提交说明,整理成你最终要留的提交信息,再保存退出就完成本地记录清理了
  5. 因为变基修改了提交历史,推送到远端feature分支时需要加强制参数:git push -f。注意:强制推送只能在你自己用的私人feature分支上操作,绝对不要在团队共用的公共分支执行这个命令

已经提交了PR,才发现PR里有重复提交

不用关PR重提,按照上面的步骤清理完本地分支的提交记录后,强制推送到你提PR时绑定的feature分支就行,PR里的提交记录会自动同步更新。

后续避坑设置

改个全局配置就能从根源避免这个问题:
执行git config --global pull.rebase true,配置完之后所有git pull操作默认会用变基逻辑同步代码,不会自动生成多余的merge提交。平时在feature分支要同步主分支最新代码时,也尽量用git rebase main,不要直接merge主分支。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 00:48:20