菜鸟笔记
提升您的技术认知

Git系列:管理、撤销以及删除

在前面提到了对文件的添加更新等操作,使用了git add,git commit等操作,接下来对撤销等相关操作进行说明。

•写在前面

前面提到过版本回退,我们可以使用git reset指令进行版本回退。但是有时候我们只是想要单纯的对已经修改的内容进行撤销,并不想通过回退操作怎么办?Git有git checkout指令对文件的修改进行撤销。还是在之前用到的readme.txt文件中进行修改。

•撤销修改git checkout

现在我们在在README.txt文件中进行修改,修改之后使用git status指令查看一下当前仓库状态,如图

这个时候你会发现在对git操作的提示中,use第一行提示你使用git add指令将修改提交至暂存区,因为这个时候你只是对文本进行了修改,并没有将修改添加至仓库,use第二行提示你使用git checkout,可以对修改进行撤销,撤销使用如下的指令,执行指令之后文本的修改都已经撤销了。注意了,你会发现我们撤销之前,我们并没有将文件添加或者提交至仓库,那如果执行了这操作会有什么区别么?这就涉及到上一篇文章讲的工作区和暂存区的概念了,不了解的可以先去查看之前的那片文章。我们在没有执行git add操作的时候,所有的修改都是在工作区进行的,没有提交到暂存区。顾名思义,这条指令撤销的是工作区的修改。

#该操作对文件进行撤销操作,一定不能少了前面的--哦,checkout功能
#不止这些,它还可以用于分支管理,后面我会发分支管理的文章
git checkout -- README.txt

那如果我们已经添加到暂存区了怎么办?这个时候我们先将修改添加到仓库。然后,使用git status查看一下状态,你会发现git提示中,会告诉你使用git reset进行撤销,指令如下。这个指令将会把暂存区的修改回退到工作区,这个时候暂存区中的已经撤销了修改,工作区回到原来的修改,这个时候可以使用之前的checkout进行撤销工作区的修改。

$ git reset HEAD ...

那如果我们将暂存区的内容进行了提交(也就是使用了commit指令)怎么办,这个时候我们还是可以使用之前在版本回退中提到的会到之前一个版本,然后再次使用checkout进行撤销。不过要小心的是,这只是在你们有将修改提交到远程仓库的前提下,可以使用这个方法进行撤销,一旦你提交到了远程仓库,emmm,在工作时那就等着被请喝茶。

•删除修改rm

每次听到删除这两个字眼,我就格外的感觉寒意(可能是听删库到跑路听多了吧),使用删除我们应该比较熟悉命令行中rm,rm的身影在许多使用指令的操作中,都是意味着删除,在git中也不例外。我们在前的操作基础上新创建一个文件并添加到仓库,我们使用如下命令进行删除操作。

$ git rm README.txt

status查询了状态会提示说我们刚刚删除了一个文件,这个操作只是在工作区生效,我们还没有将删除操作提交到暂存区,所以这个时候我们需要使用commit命令进行提交仓库。

$ git commit -m "说明"

当然,在还没有提交到仓库之前,如果发现删除错误了文件,这个时候可以使用checkout执行恢复。

$ git checkout -- aaa.txt

是不是很灵活,不过要记住的是checkout进行恢复的是已经提交到仓库中的快照,如果之前的操作没有提交到仓库。是没办法恢复的哦。

•下一步

这里大致介绍了对修改和删除的基本操作,下面我打算对前面提到过的远程仓库进行介绍。