![9347fee2131fcbaf017d765e9e682b03.png](https://img-blog.csdnimg.cn/img_convert/9347fee2131fcbaf017d765e9e682b03.png)
书接上文,
现在,假设你不但改错了东西,还从暂存区提交到了版本库分支master上,怎么办?可以用版本回退的命令。不过,这也是有条件的,就是你还没有把自己的本地仓库推送到远程。
当你推送到了远程,那么远程的仓库状态git会把你的提交记录全部给记录下来。
还记得Git是分布式版本控制系统吗?我们后面会讲到远程版本库,一旦你把错误的代码提交推送到远程版本库,你就真的惨了……
新知识:
我们在learngit中添加一个test.txt文件并且提交。
![2cff77762b6f520852741a7cb0b73def.png](https://img-blog.csdnimg.cn/img_convert/2cff77762b6f520852741a7cb0b73def.png)
一般情况下我们直接就在文件管理器中把没用的文件删除了,或者用rm
命令删了:
![a94626812a272b766194e7005b658875.png](https://img-blog.csdnimg.cn/img_convert/a94626812a272b766194e7005b658875.png)
但是,git知道你删除了文件,因此此时,工作区和版本库就不一致了,版本库的记录是有test.txt文件以及你删除它这些信息的。git status
命令会立刻告诉你哪些文件被删除了:
![75fa3ac2d686b69f18b1fbc89e2565df.png](https://img-blog.csdnimg.cn/img_convert/75fa3ac2d686b69f18b1fbc89e2565df.png)
现在你有两个选择,一是确实要从版本库中删除该文件,那就用命令git rm
删掉,并且git commit
:
![197f50193ed4b35bb8a6e8110d026df8.png](https://img-blog.csdnimg.cn/img_convert/197f50193ed4b35bb8a6e8110d026df8.png)
现在,文件就从版本库中被删除了。
也就是说,在git的世界中,你的任何操作都会被记录下来,包括你删除了一个文件,这个动作对git来说也是一次修改,也是需要记录下来的。而不是像现实世界中我们丢弃删除一个东西就直接丢弃删除不用过多考虑其他的了。所以我们要删除文件的时候使用命令git rm 和 git commit
另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:
$ git checkout - - test.txt
git checkout
其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。