全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-11 7 分钟 ✍️ juanwangdev

git reset 撤销更改

git reset 命令用于撤销暂存、回退提交,是版本控制的重要工具。

三种模式对比

模式选项工作区暂存区说明
软重置--soft保留保留只移动 HEAD
混合重置--mixed(默认)保留清空移动 HEAD,清空暂存区
硬重置--hard清空清空完全回退,丢弃所有变更

撤销暂存

Bash
# 撤销暂存(保留工作区变更)
git reset HEAD <file>
git restore --staged <file>

# 撤销所有暂存
git reset HEAD

回退提交

Bash
# 回退到上一次提交(保留变更)
git reset HEAD~1
git reset --mixed HEAD~1

# 回退到上一次提交(变更放入暂存区)
git reset --soft HEAD~1

# 回退到上一次提交(丢弃所有变更)
git reset --hard HEAD~1

回退位置表示

表示说明
HEAD~1上一次提交
HEAD~2上上次提交
HEAD~n往前第 n 次提交
abc123指定提交哈希

回退到指定提交

Bash
# 回退到指定提交
git reset abc123

# 软重置到指定提交
git reset --soft abc123

# 硬重置到指定提交(危险)
git reset --hard abc123

实用场景

撤销最近一次提交(保留变更)

Bash
git reset --soft HEAD~1

撤销暂存区文件

Bash
git reset HEAD filename

放弃所有本地修改

Bash
# 危险操作!会丢失所有未提交的变更
git reset --hard HEAD

查看回退历史

Bash
# 查看操作历史,可用于恢复
git reflog

--hard 会永久丢失未提交的变更,谨慎使用!

要点总结

  1. git reset HEAD <file> 撤销暂存
  2. --soft 保留工作区和暂存区
  3. --mixed(默认)保留工作区,清空暂存区
  4. --hard 清空所有变更,谨慎使用
  5. git reflog 可查看操作历史用于恢复

📝 发现内容有误?点击此处直接编辑

← 上一篇 git log 查看提交历史
下一篇 → git status 查看状态
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库