如何通过命令完全撤销刚做出的文件修改操作?
撤销Git文件修改的几种常用方法
嘿,别慌!撤销文件改动得看你当前的操作阶段,我把每种场景对应的命令都整理好了,你对照自己的情况来就行:
1. 只修改了文件,还没执行git add(工作区改动)
这种情况最简单,直接丢弃工作区的修改,恢复到上次提交的状态:
- 单个文件:
git checkout -- <你的文件名>或者 新版本Git用git restore <你的文件名> - 所有文件:
git checkout .或者git restore .
注意:这两个命令会直接丢掉你还没暂存的改动,没法恢复,执行前最好确认清楚!
2. 已经执行了git add,但还没git commit(暂存区改动)
得先把暂存区的改动撤回到工作区,再处理:
- 撤销单个文件的暂存:
git reset HEAD <你的文件名>或者git restore --staged <你的文件名> - 撤销所有文件的暂存:
git reset HEAD或者git restore --staged .
之后再用上面「工作区改动」的命令丢弃修改就行。
如果你想一步到位直接回到提交状态,也可以用git reset --hard HEAD,但同样要注意,这个命令会直接丢掉所有暂存和工作区的改动,谨慎使用!
3. 已经执行了git commit,但还没推送到远程仓库
这时候要撤销提交,分两种需求:
- 想保留修改,只是撤销提交:
git reset --soft HEAD~1,这样修改会回到暂存区,你可以调整后重新提交 - 想彻底丢弃这次提交的所有改动:
git reset --hard HEAD~1,这个命令会直接删除最近一次提交和对应的所有改动,非常危险,执行前一定要确认没有需要保留的内容!
最后建议你执行任何撤销操作前,先跑一遍git status,看看当前文件处于哪个阶段,这样就不会搞错命令啦~
内容的提问来源于stack exchange,提问作者Anson Savage




