git | 版本回退

版本回退

如上,我们已经学会了修改文件,现在我继续对readme.txt文件进行修改,再增加一行
内容为2333.继续执行命令如下:

往readme.txt里面添加一行2333

git | 版本回退_第1张图片
再add,然后commit给git

那么现在等于一共对 readme.txt做过三次修改了。在实际工作中,我们脑子里怎么可能记得一个几千行的文件每次都改了什么内容,不然要版本控制系统干什么。版本控制系统肯定有某个命令可以告诉我们历史记录,在Git中,我们用 git log命令查看(这里可以看出,提交注释很重要啊,不然都不知道之前提交了什么):

git | 版本回退_第2张图片
用git log查看

git log命令显示从最近到最远的显示日志,我们可以看到最近三次提交,最近的一次是,增加内容为2333.上一次是重写了两行关于git的内容,删除了hello word,第一次默认是hello word 。如果嫌上面显示的信息太多的话,我们可以使用命令 git log –pretty=oneline ,如下:

简易版显示结果

【那个刺眼的HEAD→master先不用管,可以自行百度HEAD的指向问题】
现在我想使用版本回退操作,我想把当前的版本回退到上一个版本,要使用什么命令呢?可以使用如下2种命令:
第一种是: git reset –hard HEAD^那么如果要回退到上上个版本只需把 HEAD^改成 HEAD^^ 以此类推。那如果要回退到前100个版本的话,使用上面的方法肯定不方便,我们可以使用下面的简便命令操作:
第二种: git reset –hard HEAD~100即可。未回退之前的 readme.txt内容如下:

git | 版本回退_第3张图片
未回退前,文本内容是这样的

如果想回退到上一个版本的命令如下操作:

git | 版本回退_第4张图片
回退到上一个版本啦

再来查看下 readme.txt内容如下:通过命令cat readme.txt查看:

已经回退到上一个版本了

可以看到,内容已经回退到上一个版本了。我们可以继续使用git log来查看下历史记录信息,如下:

git | 版本回退_第5张图片
只存在两个版本的信息了

我们看到 增加333333 内容我们没有看到了,但是现在我想回退到最新的版本,如:有2333的内容要如何恢复呢?我们可以通过版本号回退,只要上面的命令行窗口还没有被关掉,你就可以顺着往上找啊找啊,找到那个2333的commit idd9d...2e,使用命令git reset –hard 版本号,于是就可以指定回到未来的某个版本(版本号没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了)。
但是现在的问题假如我已经关掉过一次命令行或者2333内容的版本号我并不知道呢?要如何知道增加2333内容的版本号呢?可以通过如下命令即可获取到版本号:git reflog 如下:

git | 版本回退_第6张图片
查看之前的版本号

通过上面的显示我们可以知道,增加内容3333的版本号是 d9dddc8.我们现在可以命令
git reset –hard d9dddc8来恢复了。演示如下:

git | 版本回退_第7张图片
2333又回来啦

【解释一下HEAD是啥】
Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针,当你回退版本的时候,Git仅仅是把HEAD从指向append GPL(这个图是我用的别人的图,按照上文的实际操作,这里是指向2333):


git | 版本回退_第8张图片
git-head

改为指向add distributed(也就是第二个版本,文件重写了两行关于git的内容,删除了hello word):


git | 版本回退_第9张图片
git-head-move

然后顺便把工作区的文件更新了。所以你让HEAD指向哪个版本号,你就把当前版本定位在哪。

你可能感兴趣的:(git | 版本回退)