Git 本地仓库(Repository)详解(5)

2).取消(撤消)修改

下面我们来讲解怎么撤消修改,一般情况下我们是不会出错的,但是项目比较紧,老是有人在催你(这个你懂的),突然出错了,我们想取消修改那又怎么办呢?如下图:

modify11

在你要提交之前,你发现在有错误了,应该是101。既然错误发现得很及时,就可以很容易地纠正它。你可以删掉最后一行,手动把文件恢复到上一个版本的状态。我信先用git status查看一下,如下图:

modify12

如上图,Git会告诉你有你个文件被修改,你有两个选择,一个用 git add 提交到暂存区,另一个是用git checkout可以丢弃工作区的修改。命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

一种是readme.txt自修改后还没有被放到暂存区,现在撤销修改就回到和版本库一模一样的状态;

另一种是readme.txt已经添加到暂存区后,又作了修改,现在撤销修改就回到添加到暂存区后的状态。

总之,就是让这个文件回到最近一次git commit或git add时的状态。下面我们来演示一下,如下图:

modify13

大家可以看一下 readme.txt 文件果然还原到上一个版本了,嘿嘿!大家注意哦,git checkout -- file命令中的“--”很重要,没有“--”,就变成了“创建一个新分支”的命令,我们在后面的文章中将详细讲解分支管理。真是祸不单行啊,我们不但程序写错了,还 git add 到暂存区了,如下图:

modify14

不管怎么样,我们先查看一下状态吧,如下图:

modify15

大家可以看到Git告诉我们,用 git reset HEAD file 可以把暂存区中的修改撤消掉,重新放回工作区,如下图:

modify16

git reset命令既可以回退版本,也可以把工作区的某些文件替换为版本库中的文件。当我们用HEAD时,表示最新的版本。我们再用 git status 查看一下发现,现在的暂存区是干净的,工作区有修改。

那说明我们撤消成功,嘿嘿!下面我们再执行 git checkout命令撤消工作区修改,如下图:

modify17

好了,到这里我们终于撤消回来了,嘿嘿。现在,假设你不但改错了东西,还从暂存区提交到了版本库,怎么办呢?还记得版本回退一节吗?可以回退到上一个版本。不过,这是有条件的,就是你还没有把自己的本地版本库推送到远程。还记得Git是分布式版本控制系统吗?我们后面会讲到远程版本库,一旦你把错误提交推送到远程版本库,你就真的惨了……大家小心就好,哈哈……好了,下面我们来总结一下:

当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。

当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了第1步,第二步按第1步进行操作,就是执行一下git checkout -- file。

已经提交了不合适的修改到版本库时,想要撤销本次提交,参考我们前面讲解的版本回退,不过前提是没有推送到远程库。嘿嘿,祝你回退成功。

好了,撤消管理我们已经讲了很多了,下面我们来说一下文件删除的问题,终于快通关了。嘿嘿……

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/17603.html