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

如何移除Git提交历史中间的合并提交?

删除提交历史中的合并提交

直接用git rebase -i看不到合并提交是因为默认rebase会线性化提交历史,自动忽略合并记录。你可以用带--rebase-merges参数的rebase命令来保留并编辑合并提交:

  1. 确定基准提交ID:找到第一个要删除的合并提交的前一个提交(比如你示例里的commit 2的ID),作为rebase的起点。
  2. 启动交互式rebase并保留合并:执行命令:
    git rebase -i --rebase-merges <commit2的ID>
    
    旧版本Git可以用-p(--preserve-merges)替代--rebase-merges,不过前者已被标记为废弃,优先使用后者。
  3. 编辑提交列表:在弹出的编辑器里,找到那两行对应合并提交的记录(格式类似merge -C <合并提交ID> develop into branch),直接删除这两行。
  4. 完成rebase:保存并退出编辑器,Git会自动重新应用后续的所有提交,跳过你删除的那两个合并。如果过程中出现冲突,解决冲突后执行git rebase --continue即可。

注意事项

  • 如果这个分支已经推送到远程仓库,完成本地修改后需要强制推送:
    git push --force-with-lease
    
    用--force-with-lease比直接--force更安全,能避免覆盖其他人的推送。但执行前一定要和团队成员沟通,因为这会修改公共提交历史。
  • 如果你担心rebase出错,可以先创建一个临时分支备份当前状态:
    git branch backup-branch
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 03:45:46