上期介绍了如何用git的回溯功能来实现代码世界的时空跳跃。但是问题很明显:如果跳回的时间又觉得有点远,能跳回较近的时间吗?本期我们就来看看这个。
一、跳转后的情况
我们发现在跳转到第一个版本的代码时空后,再在git bash命令行输入git log
,只显示当前版本的版本号了
也就是说如果我们没有保存之前新版本的id而且也清空了之前的命令行的话,我们就难以再获得原版本的id了。
那难道我们没有办法撤销我们时空倒流的操作了吗?
显然不可能存在这么反人类的设计
二、Git命令记录
Git存在查看你每一条命令的功能:
git reflog
在命令行里输入这个神奇的命令,就会返回你的命令记录:
看到这个激动人心的字符串了吗?我们要找的id正在其中!
我们就可以愉快地复制原先代码时空的id来吃下这个后悔药了!
三、Git 的id模糊性
等等!我们发现moving to 后面那串字符串是我们回溯到从前代码时空的代码。通俗地说,我们从“现在”转移回1999年,记录下来的是:
你已经成转移至1999年
可我们并不记得现在是几几年啊……
一筹莫展之时我们发现HEAD@{}前面有一串字符串,好像和id很像,但是少了很多。事实上,仔细发现就会发现这些字符串就是id的前一小部分
没错,这就是在命令操作中git版本id的模糊性
你在跳转或者其他跟id有关的操作时,只需要输入前面一小部分就可以了,git会自动寻找的(不过不能输入太少,否则找到多个匹配的版本就没办法了)
我们愉快地把HEAD@{2} 也就是显示“my third file”的记录前面的id复制下来,就可以回到现代了!
查看一下文档,没毛病!