写代码的时候往往需要回退,比如我操我写了一堆什么烂玩意,再比如,这功能加上还不如不加,这个时候你就会迫切需要把戴拿回退到你糟蹋它之前的状态。
git的回退操作包括好几种,
一种情况,你刚刚修改完代码,还没有急不可耐的运行git add,这个时候意识到你写的很垃圾(反应迅速且有自省能力),需要回退到之前,你只需要运行
git checkout -- filename
就可以将文件filename回退。它其实是从仓库里面把filename文件check下来覆盖本地工作区同名文件了。
另一种情况,你已经运行了git add,将文件提交到了暂存区,但是还没有commit,那你可以运行
git reset filename
取消该文件的暂存,取消之后你再运行git checkout -- filename,回退到仓库版本即可。
或者直接运行
git reset --hard
这条指令是将所有暂存未提交的文件取消暂存,并且回退到仓库版本
相当于与运行了两条指令:
git reset *
git checkout -- *
注意,这条指令不仅会全部回退到仓库版本,还会删除你所有新创建的文件,其实就是完完全全的复刻了仓库版本。
如果你不希望删除新文件,可以运行
git reset commit
其中commit是某个版本的长序号,可以通过
git log XXX
查看这些长序号。
这是希望合并工作区与之前提交的版本。其中,新创建的文件不会删除,新做的修改不会回退。
如果你运行
git reset --hard commit
那么,新文件不会删除,但是新的修改是会被回退到仓库版本的。