随机
Enter 搜索 ↑↓ 切换 Esc 清空

git-reset

命令

重置当前 HEAD 到指定状态

git-reset

重置当前 HEAD 到指定状态

补充说明

git reset 命令用于将当前分支的 HEAD 重置到指定状态。根据选项不同,可以控制是否保留工作区和暂存区的更改。

语法

git reset [OPTIONS] [<commit>]

选项

--soft                # 只重置 HEAD,保留暂存区和工作区
--mixed               # 重置 HEAD 和暂存区,保留工作区(默认)
--hard                # 重置 HEAD、暂存区和工作区(⚠️ 丢弃所有更改)
--merge               # 重置 HEAD 和暂存区,保留工作区中未合并的更改
--keep                # 重置 HEAD,如果工作区有更改则中止

常用实例

# 撤销最近一次提交(保留更改在暂存区)
git reset --soft HEAD~1

# 撤销最近一次提交(保留更改在工作区)
git reset --mixed HEAD~1
git reset HEAD~1    # --mixed 是默认的

# 撤销最近一次提交(丢弃所有更改 ⚠️)
git reset --hard HEAD~1

# 撤销最近两次提交
git reset --soft HEAD~2

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

# 取消暂存(unstage)
git reset HEAD file.txt

# 取消所有暂存
git reset HEAD .

# 撤销 merge
git reset --hard ORIG_HEAD

三种模式对比

模式 HEAD 暂存区 工作区 用途
--soft ✅ 重置 ❌ 保留 ❌ 保留 撤销提交,重新组织提交
--mixed ✅ 重置 ✅ 重置 ❌ 保留 撤销提交和暂存
--hard ✅ 重置 ✅ 重置 ✅ 重置 彻底回退(危险!)

恢复误操作

# 如果误用了 --hard,可以通过 reflog 恢复
git reflog
# 找到误操作前的 HEAD,如 abc123
git reset --hard abc123