git reset 参考
git reset 用于移动当前分支的 HEAD,并按模式影响暂存区和工作区。它适合处理本地未推送历史;已推送的提交通常优先考虑 git revert。
语法
git reset [--soft|--mixed|--hard] <commit>
常用模式
| 模式 | HEAD | 暂存区 | 工作区 | 常见用途 |
|---|---|---|---|---|
--soft |
移动 | 保留 | 保留 | 撤销 commit,保留 staged |
--mixed |
移动 | 重置 | 保留 | 撤销 commit 和暂存,默认模式 |
--hard |
移动 | 重置 | 重置 | 丢弃本地改动,风险最高 |
示例
撤销最后一次本地提交,但保留改动:
git reset --soft HEAD~1
取消暂存文件:
git reset HEAD file.md
回到某个提交并丢弃工作区改动:
git reset --hard <commit>
常见错误
- 对已推送共享分支使用 reset 后强推,会改写别人依赖的历史。
- 不确认工作区状态就使用
--hard,可能丢失未提交改动。 - 把 reset 和 revert 混用:reset 改历史,revert 新增一个反向提交。
相关内容
相关内容
- git rebase 参考 git rebase Reference,整理变基、交互式 rebase、合并提交、rebase --continue、--abort、风险和常见错误。
- git reflog 参考 git reflog Reference,整理 HEAD 移动记录、找回丢失提交、reset 恢复、rebase 后恢复和常见错误。
- git remote 参考 git remote Reference,整理查看、添加、修改、删除远程仓库,origin、set-url、remote -v、remote show 和常见错...
- git revert 参考 git revert Reference,整理用新提交撤销旧提交、revert 普通提交、revert merge、适用场景和常见错误。
- git stash 参考 git stash Reference,整理临时保存改动、stash push、list、show、apply、pop、drop、include-untrack...