【Git】撤销修改
如果我们在我们的工作区写了很长时间代码,越写越写不下去,觉得自己写的实在是垃圾,想恢复到上一个版本。
情况一:对于工作区的代码,还没有 add
你当然可以直接删掉你目前在工作区新增的代码,像这样:
向test中新增一行代码
幸亏我们工作效率不高,才写了一行代码就可以发现了,要是你写了3天,一直都没有提交,该怎么删掉呢?
你自己都忘了自己新增过哪些,有同学说,我可以git diff xxx
一下,看看差别在哪里删除呢?那你肯定又要花3天时间删代码了,并且很大的概率还会改出bug。一周过去了,你怎么向你的老板交代呢?
Git其实还为我们提供了更好的方式,我们可以使用git checkout -- [file]
命令让工作区的文件回到最近一次add
或commit
时的状态。
要注意git checkout -- [file]
命令中的--
很重要,切记不要省略,一旦省略,该命令就要变为其他意思了,后面我们再说。示例如下:
情况二:已经add,但没有commit
add后还是保存到了暂存区呢?怎么撤销呢?
让我们来回忆一下学过的git reset回退命令,该命令如果使用–mixed参数,可以将暂存区的内容回退为指定的版本内容,但工作区文件保持不变。那我们就可以回退下暂存区的内容了!!!示例如下:
用git status查看一下,发现现在暂存区是干净的,工作区有修改。
恢复了!
情况三:已经add,并且也commit了
不要担心,我们可以git reset --hard HEAD^
回退到上一个版本!不过,这是有条件的,就是你还没有把自己的本地版本库推送到远程。还记得Git是分布式版本控制系统吗?我们后面会讲到远程版本库,一旦你推送到远程版本库,你就真的惨了……