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

无法完全合并Git提交,如何合并重复提交并理清分支结构?

Git提交历史清理方案

问题背景

提交Paises ISO 3166-1均修改相同文件,最终文件状态一致,但分支前的蓝线上存在多个该提交。尝试git rebase -i c5d892b4后仍未达到预期,需求如下:

  • 仅保留一个Paises ISO 3166-1提交
  • 让分支从custom分出的关系清晰可见
  • 删除指定提交:0a691a8c、cc4861a3、452b4608、846721da
  • 恢复到合并操作搞砸前的状态

解决步骤

1. 先恢复到合并前的干净状态(可选)

如果当前rebase后的状态已混乱,通过reflog找回之前的正确历史:

  • 执行git reflog,找到合并操作前的HEAD记录(比如类似HEAD@{n}: commit: 合并前的提交说明)
  • 执行git reset --hard <对应哈希值>,回到未搞砸的状态

2. 交互式rebase清理提交

执行命令启动交互式rebase,目标覆盖c5d892b4及之前的提交:

git rebase -i c5d892b4~1

在弹出的编辑器中:

  • 找到要删除的4个提交,将它们行首的pick改为drop(或直接删除对应行)
  • 找到所有重复的Paises ISO 3166-1提交,只保留一个,其余同样改为drop
  • 保存并退出编辑器,Git会自动重新生成干净的提交历史

3. 验证与推送

  • 执行git log --graph --oneline查看历史,确认分支从custom分出的关系清晰,且仅保留了一个目标提交
  • 私有仓库直接推送:git push;公共仓库需强制推送(提前告知协作成员):
git push --force-with-lease

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 04:39:34