Git基础操作6 | 青训营笔记

103 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第12天

上期介绍了如何用git的回溯功能来实现代码世界的时空跳跃。但是问题很明显:如果跳回的时间又觉得有点远,能跳回较近的时间吗?本期我们就来看看这个。

一、跳转后的情况

我们发现在跳转到第一个版本的代码时空后,再在git bash命令行输入git log,只显示当前版本的版本号了

image.png

也就是说如果我们没有保存之前新版本的id而且也清空了之前的命令行的话,我们就难以再获得原版本的id了。

那难道我们没有办法撤销我们时空倒流的操作了吗?
显然不可能存在这么反人类的设计

二、Git命令记录

Git存在查看你每一条命令的功能:

git reflog

在命令行里输入这个神奇的命令,就会返回你的命令记录:

image.png

看到这个激动人心的字符串了吗?我们要找的id正在其中!

我们就可以愉快地复制原先代码时空的id来吃下这个后悔药了!

三、Git 的id模糊性

等等!我们发现moving to 后面那串字符串是我们回溯到从前代码时空的代码。通俗地说,我们从“现在”转移回1999年,记录下来的是:

你已经成转移至1999年

可我们并不记得现在是几几年啊……

一筹莫展之时我们发现HEAD@{}前面有一串字符串,好像和id很像,但是少了很多。事实上,仔细发现就会发现这些字符串就是id的前一小部分

没错,这就是在命令操作中git版本id的模糊性

你在跳转或者其他跟id有关的操作时,只需要输入前面一小部分就可以了,git会自动寻找的(不过不能输入太少,否则找到多个匹配的版本就没办法了)

我们愉快地把HEAD@{2} 也就是显示“my third file”的记录前面的id复制下来,就可以回到现代了!

image.png

查看一下文档,没毛病!

image.png