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

使用git rebase -i无法清理提交历史,如何删除旧提交保留新提交?

方案1:使用 git rebase -i 保留指定提交记录

你之前操作未生效大概率是未指定正确的基准提交,按以下步骤操作即可:

  • 方法一:列出全量提交操作,直观不易出错
    执行命令:git rebase --root -i
    在弹出的编辑界面中,删除09axxx、09bxxx、09cxxx三个旧提交对应的行,仅保留09dxxx到09fxxx的行,保存退出即可完成旧提交清理
  • 方法二:指定基准提交操作,执行速度更快
    执行命令:git rebase -i 09cxxx

    注意此处的09cxxx是你需要保留的第一个提交09dxxx的前一个旧提交的哈希前缀
    在弹出的编辑界面中确认仅显示09dxxx到09fxxx三个提交,保存退出即可

方案2:使用孤儿分支合并保留的提交为单个初始提交

如果你不需要保留09dxxx到09fxxx的提交历史,想把这三个提交的内容合并为一个全新的初始提交,完全抹除所有旧历史,这个方案操作更简单不易出错:

  • 基于当前最新提交创建无任何历史记录的孤儿分支:
    git checkout --orphan temp_branch
  • 暂存当前所有文件后生成新的初始提交:
    git add .
    git commit -m "Init: 仅保留09dxxx之后的代码"
    
  • 把需要清理的目标分支(比如main分支)的历史强制重置为当前孤儿分支的状态:
    git checkout main
    git reset --hard temp_branch
    
  • 执行git log确认提交历史符合预期后,删除临时孤儿分支:git branch -D temp_branch

注意事项

  • 如果你的代码已经推送到远程仓库,清理完本地历史后需要执行git push -f强制推送覆盖远程的提交历史
  • 如果是多人协作的公共仓库,操作前务必提前通知所有协作者,避免其他人基于旧历史提交产生无法解决的代码冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:54:02