我们在readme.txt中添加了一些内容,如下;
Git is a distributed version control system
Git is free software distributed under the GPL
Git has a mutable index called stage
Git tracks changes of files
My stupid boss still prefers SVN
这个时候还没有提交到暂存区,使用git status显示如下:
这个时候我们可以看到,如果我们想丢弃这个修改,就可以使用git check -- <file>来实现:
我们再来查看下readme.txt文件,就可以看到这次的修改已经取消了,显示的是这次修改前的内容。
当然,还有一种可能的情况,就是文件已经提交到了暂存区内,现在如何取消
用git add来增添到暂存区之后,用git status来看下状态,显示如下:
可以看到用git reset HEAD<file>来将在暂存区的内容撤销掉,重新放入工作区:
现在再来用git status来看下目前的状态:
这样,显示的是此内容已经不再暂存区了,已经回到了工作区。
这样我们再用上面所说的git checkout -- file来修改工作区的内容,放弃此次的修改,回到修改前的状态。
查看readme.txt,显示的内容无误。
还注意到了一个:git reset可以用来把暂存区的内容回退到工作区,也可以在文件用commit提交后回退到历史的任一版本,当然reset后面跟的是不同的命令符。
小结
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>
,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考穿梭到历史的任一版本一节,不过前提是没有推送到远程库。
以上是我看廖雪峰老师的网站,然后做的学习摘抄,无意侵犯老师作品,如有侵犯,我会删除。