You need to enable JavaScript to run this app. 如何在Git中移除指定提交 仅保留特定历史提交
优惠活动
大模型
产品
解决方案
定价
更多

如何在Git中移除指定提交 仅保留特定历史提交

Git回退操作步骤

操作前建议先给当前分支打个备份标签,避免操作失误丢失提交:git tag backup_before_rebase,确认操作结果无误后再删除标签即可。如果当前工作区有未提交的修改,先执行git stash暂存,避免数据丢失。

第一步:执行交互式变基筛选提交

你需要保留的3个提交中,346d27是33f71c的父提交,会默认保留,我们只需要筛选33f71c及之后的提交即可,执行命令:

git rebase -i 33f71c^

执行后会弹出文本编辑界面,所有33f71c之后的提交会按从旧到新的顺序排列,每行开头默认是pick,按以下规则修改:

  • 33f71c对应的行保持pick不动
  • 221e689对应的行保持pick不动
  • 其余所有提交对应的行直接整行删除

保存退出编辑界面后,Git会自动完成变基操作,操作完成后执行git log --oneline确认提交记录是否符合预期。

第二步:同步到远程仓库(仅需要修改远程分支时执行)

注意:该操作会覆盖远程分支的提交历史,多人协作场景下操作前需通知所有协作者
执行强制推送命令即可:

# 替换mybranch为你实际操作的分支名,比如master
git push origin mybranch --force

操作失误回滚方法

如果操作后发现结果不符合预期,可执行git reflog查看操作前的HEAD哈希值,执行以下命令回滚到操作前的状态:

# 替换<旧HEAD哈希>为你在reflog中查到的操作前对应哈希
git reset --hard <旧HEAD哈希>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 03:39:03