转载廖雪峰的官方网站
撤销修改
1.工作区文件撤销
如果不小心在readme.txt
中不小心添加一行:
|
|
在你准备提交的时候,发现stupid boss不是太合适。
既然发现了,就可以及时的将其删除,删除最后一行,恢复到上个版本。你可以使用git status
查看一下
|
|
Git告诉你可以使用git checkout -- <file>
可以丢弃工作区的修改
|
|
果然,readme.txt
又恢复到了原来的内容。
2.暂存区文件撤销
再在readme.txt
中添加一行
|
|
并且进行了git add
操作,再通过git status
查看一下状态
|
|
同样的Git告诉我们可以使用git reset HEAD <file>...
撤销暂存区的内容
|
|
git reset
命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD
时,表示最新的版本。再用git status
查看一下,现在暂存区是干净的,工作区有修改:
|
|
在通过git checkout -- <file>
撤销工作区的修改
|
|
现在,假设你不但改错了东西,还从暂存区提交到了版本库,怎么办呢?还记得版本回退一节吗?可以回退到上一个版本。不过,这是有条件的,就是你还没有把自己的本地版本库推送到远程。还记得Git是分布式版本控制系统吗?我们后面会讲到远程版本库,一旦你把“stupid boss”提交推送到远程版本库,你就真的惨了……
小结
又到了小结时间。
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file
,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。