命令:cat 文件名:能够查看文档里面内容
git log:显示从最近到最远提交的日志
git reset --hard HEAD^ :回退到上个版本,如果想回退到上上个版本就HEAN^^,当然如果回退前一百个版本,我们不能敲一百个^,可以用简便命令操作:git reset --hard HEAD~100即可
再用 cat readme.txt 通过查看文本内容就可以看到是否回退了
如下从内容我们可以看到已经回退到了上一个版本,并且再看历史记录也没有了到三次的
git reset --hard 版本号来回退,
但是如果不记得版本号就要用 git reflog 来获取版本号
如下;第三次修改的版本号是 422c4bf
用 git reset --hard 422c4bf 来恢复
在查看文档内容发现已经恢复
工作区:就是在电脑上看到的目录,比如目录下testgit里的文件(.git隐藏目录版本库除外),或者以后需要再新建的目录文件等都属于工作区范畴
版本库(Repository):工作区有一个隐藏目录.git,这个不属于工作区,是版本库,其中版本库里面存了很多东西,其中最重要的就是暂存区(stage),还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD。
前面我们说过,Git提交文件到版本库有两步。
1.使用git add把文件添加进去,实际就是把文件添加到暂存区。
2.使用git commit 提交更改,实际上就是把暂存区的所有内容提交到当前分支上。
接下来重新演示一下这个步骤,先想readdme里面添加一行444444,并新增文件test
然后执行以下步骤:
git status:可以看到修改的文件和新增的文件,如下
git add:将两个文件都添加进暂存区,再用git status 查看状态
git commit -m "备注" 一次性将这两个文件提交到分支上去,再用git status 查看
git跟踪管理的是修改而并非文件,接下来用两次操作体现。
第一次:向test新增内容111111,然后执行两步提交到版本库中
第二次:向test新增内容222222,不执行git add命令,直接git commit到版本库中。
一、
二、由下图可见第二次的修改没有提交,因为第二次没有放到暂存区就直接提交了
综上可见,git管理的是修改,当用git add命之后,在工作 区第一次的修改被放到暂存区,准备提交,但是在工作区的第二次修改并没有放到暂存区,所以 git commit 只负责把暂区的修改提交了,也就是第二次的修改不会被提交。
提交后,用 git diff HEAD -- test.txt 命令可以查看工作区和版本库里最新版本的区别:
先向readme.txt文件里新增一行555555,用 cat readme.txt查看文档内容
在未提交之前(未放到暂存区)发现提交的555555有误想要撤销,一共有三个方法
1.知道要删掉哪些内容,直接手动更改去掉哪些需要的文件,然后add到暂存区,最后commit掉
2.按照上面回退的方法,直接回退恢复到上一个版本,使用 git reset --hard HEAD^
除了上面的方法,还有第三种就是用撤销命令
3.git checkout --文件:丢掉工作区的修改,
在这里先git status 看一下状态,再用git checkout -- readme.txt丢掉工作区修改后我们再查看一下内容
git checkout -- readme.txt的意思就是把该文件在工作区的修改全部撤销,这里有两种情况
1.没有放到暂存区:使用撤销修改就和回到和版本库一模一样的状态
2.在放到暂存区后又接着作了修改,撤销修改就回到添加暂存区后的状态
对于第二种情况我们接着展示,先添加555555放到暂存区不提交,再添加666666后使用该命令回退
这里就以删除test.txt为例,该文件之前已经提交到分支上。
一般情况下;可以在目录下直接删除,或者使用rm命令:rm test.txt。如果想彻底在版本库里面删掉它,可以再执行git commit命令。如下(也可以用 dir 命令来看当前目录下的文件)
那么只要没有commit之前,想要在版本库里面恢复此文件,可以使用命令:
git checkout -- test.txt,再来看目录