跳到主要内容

Git 撤销操作速查表 — reset / revert / restore

Git 撤销操作是开发者日常最常用的操作之一,也是最容易出错的。本文详细对比 reset/revert/restore 三种撤销方式的使用场景和区别,帮助你在任何时候都知道"如何撤销刚才的操作"。

更新: 2026-07-15·19 条命令

快速选择

场景命令推荐度
撤销上次 commit,保留修改继续改git reset --soft HEAD~1⭐⭐⭐⭐⭐
彻底丢弃上次 commit 的所有修改git reset --hard HEAD~1⭐⭐ 慎用
撤销已推送的提交git revert ⭐⭐⭐⭐⭐
丢弃工作区的未暂存修改git restore ⭐⭐⭐⭐⭐
撤销暂存区的修改git restore --staged ⭐⭐⭐⭐⭐

核心命令详解

### git reset — 移动 HEAD 指针

reset 有三种模式,区别在于对工作区和暂存区的影响:

模式HEAD暂存区工作区安全等级
--soft✅ 移动✅ 保留✅ 保留🟢 安全
--mixed(默认)✅ 移动❌ 清空✅ 保留🟡 注意
--hard✅ 移动❌ 清空❌ 丢弃🔴 危险
### git revert — 安全撤销(推荐)

revert 不修改历史,而是创建一个新的提交来抵消旧提交的更改。这是已推送提交的唯一安全撤销方式。

``bash # 撤销单个提交 git revert abc1234

# 撤销多个连续提交 git revert HEAD~3..HEAD

# 只撤销更改但不自动创建提交(检查后再提交) git revert --no-commit abc1234 `

### git restore — 丢弃未提交的修改

`bash # 丢弃工作区的修改 git restore src/app.ts

# 丢弃所有工作区修改 git restore .

# 从暂存区移出(不修改工作区) git restore --staged src/app.ts ``

撤销操作(19)

命令难度
git commit --amend
修改最近的提交信息或内容
基础
git reset --soft
软重置,保留更改在暂存区
中级
git reset --mixed
混合重置,保留更改在工作区
中级
git reset --hard
硬重置,丢弃所有更改
中级
git revert
撤销一个提交的更改(通过新提交)
中级
git revert --no-commit
撤销更改但不自动提交
中级
git restore
恢复工作区文件到指定状态
基础
git restore --staged
将暂存区的文件取消暂存
基础
git restore .
恢复所有工作区文件的更改
基础
git restore --source
从指定提交恢复文件
中级
git checkout --
丢弃工作区文件的更改
基础
git checkout -f
强制切换分支并丢弃本地更改
基础
git clean -fd
强制删除未跟踪的文件和目录
中级
git clean -n
预览将要删除的未跟踪文件
基础
git clean -fdX
删除被 .gitignore 忽略的文件和目录
中级
git reflog
显示引用日志(所有HEAD移动历史)
中级
git rebase --abort
中止正在进行中的变基操作
中级
git cherry-pick --abort
中止正在进行中的拣选操作
中级
git bisect reset
重置二分查找状态
中级

常见问题

本速查表数据整理自各工具官方文档。最后更新: 2026-07-15。