<3> git的一些介绍(中3)
1)这篇,我们来聊聊关于工作区和暂存区、以及文件的一些命令操作。仓库的工作区指的是除了.git文件夹的其他目录。.git文件夹也是版本库。版本库存了很多内容,其中最重要的就是stage(或者叫index)的暂存区,以及git为我们自动创建的第一个分支master,以及指向master的指针叫做“HEAD”。
其实,文件添加到git版本库的时候,是分两步执行的,第一步是用git add把文件加到stage,然后通过git commit将暂存区的内容全部提交到当前分支。(注意:只执行git commit并不会将文件提交到分支)。我们在撤销修改的时候,应该是分为三种情况:
1 . 仅仅在工作区修改,没有做git add和git commit操作。
“git status“
”git checkout -- Test.txt“,即可恢复。
2 . 在工作区修改了之后,执行了git add,但是没有执行git commit。
”git status“
" git reset HEAD Test.txt"
这个时候,就回到了第一种的情况,然后使用”git checkout Test.txt“即可恢复。
3 . 在工作区修改了之后,执行了git add之后,又执行了git commit。
因为第三种是你已经提交过了,当然版本号就不一致了,因此这种情况的恢复,应该就需要你使用”git reset --hard HEAD^“命令回退版本了。
2)git中的删除操作也是属于修改操作。我们可以手动删除工作区的文件,也可以使用”git rm“来删除文件。删除之后的恢复也有两种情况(假设删除了Test.txt):
1 . 直接在文件中手动删除
我们直接使用”git checkout -- Test.txt“命令来恢复即可,因为手动删除只是在工作区中删除了,并不会将这种操作添加到暂存区。
2 . 使用”git rm“命令删除
我们需要首先使用”git reset --hard Test.txt“来恢复到暂存区之前的操作,然后使用”git checkout -- Test.txt“来进行恢复。
你看上边的图,我们使用了”git rm“删除了文件之后,直接使用”git checkout“命令是无法恢复的,需要先reset,再进行checkout操作。
未完,待续。