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

如何恢复Git指定提交状态并作为新提交推送且保留原有历史记录

解决方案

两种方案都可以满足你「保留全部原有提交历史、仅新增回滚提交」的需求,不需要手动修改代码:

方法1:批量回滚最近三次提交

git revert本身支持批量处理一段范围的提交,不需要逐个指定:

  • 如果需要保留每一次提交对应的单独回滚记录,直接执行:
git revert HEAD~3..HEAD

如果没有冲突,Git会自动生成3条对应回滚提交,默认提交信息为Revert "原提交的说明",你也可以按需求修改。

  • 如果只需要生成一条合并的回滚提交,添加--no-commit(简写-n)参数即可:
git revert -n HEAD~3..HEAD
# 改动会自动进入暂存区,自行提交即可
git commit -m "恢复到三次提交前的Stuff状态"

注意:如果回滚过程中出现冲突,解决冲突后执行git add <冲突文件>,再执行git revert --continue即可继续流程。

方法2:直接对齐到目标提交状态(一步到位)

如果你不需要逐次回滚中间提交,想要直接把当前项目完全恢复到-3对应提交的状态,可以用git read-tree命令,它会直接把暂存区和工作目录重置为目标提交的状态,但不会移动当前分支的HEAD指针:

  1. 先通过git log --oneline查询到你要恢复的-3提交对应的SHA值(假设为abc123)
  2. 执行命令:
git read-tree --reset -u abc123
  1. 执行完成后所有文件已经和目标提交完全一致,直接提交即可:
git commit -m "恢复到提交abc123(Stuff状态)"

推送远程

两种方案都是新增提交,不会修改任何已有提交历史,操作完成后直接正常推送到远程即可,不需要使用强推参数:

git push origin master

内容的提问来源于stack exchange,提问作者Martin Müsli

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:06:02