撤销是单人开发中最需要安全感的操作。
这就像写了半天小说,觉得不满意,想回到上一次保存的状态。这个操作是不可逆的,丢弃就是真的丢了。
git checkout -- <文件名>
git restore <文件名>
你把一些调试用的临时文件 add 了,但还不想提交。把它们从购物车里拿出来:
git reset HEAD <文件名>
git restore --staged <文件名>
你刚提交完,一拍脑袋发现少改了个文件,或者提交信息里的单词拼错了。你想把这次提交撤销,但改动还保留在工作区,让你修改后重新提交。
git reset --soft HEAD~1
这条命令的意思是:“撤销最近一次提交,但把那次提交的快照内容原封不动地放回暂存区,仿佛一切都没发生,只是退了一步。”
你尝试了一个疯狂的想法,提交了一次,现在确定它毫无价值。你要连带提交和改动彻底从历史中剔除。
git reset --hard HEAD~1
警告:--hard 是双刃剑,它会丢弃工作区和暂存区的所有对应修改。请确认你真的不再需要它们。