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会永久丢失未提交的变更,谨慎使用!
要点总结
git reset HEAD <file>撤销暂存--soft保留工作区和暂存区--mixed(默认)保留工作区,清空暂存区--hard清空所有变更,谨慎使用git reflog可查看操作历史用于恢复
📝 发现内容有误?点击此处直接编辑