3.2 撤销与回退:成年人,有后悔药

撤销是单人开发中最需要安全感的操作。

场景一:只是改乱了工作区,想回到最初的模样

这就像写了半天小说,觉得不满意,想回到上一次保存的状态。这个操作是不可逆的,丢弃就是真的丢了。

bash
复制代码
git checkout -- <文件名>
git restore <文件名>

场景二:不该加入暂存区的文件,误伤了

你把一些调试用的临时文件 add 了,但还不想提交。把它们从购物车里拿出来:

bash
复制代码
git reset HEAD <文件名>
git restore --staged <文件名>

场景三:刚刚的提交有重大问题,需要重来

你刚提交完,一拍脑袋发现少改了个文件,或者提交信息里的单词拼错了。你想把这次提交撤销,但改动还保留在工作区,让你修改后重新提交。

bash
复制代码
git reset --soft HEAD~1

这条命令的意思是:“撤销最近一次提交,但把那次提交的快照内容原封不动地放回暂存区,仿佛一切都没发生,只是退了一步。”

场景四:那个想法彻底烂尾,我想全扔掉

你尝试了一个疯狂的想法,提交了一次,现在确定它毫无价值。你要连带提交和改动彻底从历史中剔除。

bash
复制代码
git reset --hard HEAD~1

警告:--hard 是双刃剑,它会丢弃工作区和暂存区的所有对应修改。请确认你真的不再需要它们。