某天我在勤勤恳恳地调css的参数但是出了一些不可控的意外,所以脑子一热就使用git将它回溯到昨天晚上保存的版本,但是又出现了另一个问题——我一下午的工作白做了,所以又向给重新回到我回溯之前的版本,这就是我翻车的起因
所以,我们要思考一下有没有可能重新通过180°华丽的回旋使我们重新将车翻回来——
首先,我是在没有向暂存区或者库内提交我当天修改后的版本的,所以暂存区是空白的,库内是以前的版本。
通过以下命令回溯
$ git reset --hard HEAD^
再向撤销这个命令,我们会想查一下历史的操作,然后通过每次操作的id回到那个版本
$ git reflog
会出现一下的信息(以我的git库为例)
a88d3f5 HEAD@{6}: reset: moving to HEAD^
这条语句意思是回到了当前版本的上一个版本,相当于直接将工作区的文件内容修改成了上一个版本的,所以当天写的内容就相当于没有了记录(前提是没有向暂存区或库内提交)。
当时内心是绝望的
然而,我又想我用的编译器是webstorm,它是和我的git库是有关联的,所以有没有可能通过IDE本身将我的车翻回来——
事实证明还真能!
webstorm有一个很强大的功能——记录你一定时间内对文件做了那些操作,我们以下面的文件为例——
在导航条处有一个VCS选项,里面有一个本地历史选项,再选择显示历史
会出现以下窗口——
我任意选中一个时间点的记录,然后右面的左侧是当时文件的内容(只读),右侧是现在的文件状态,高亮的部分是对某一行的增加、删除、修改,然后我们只要推理以下哪个时间点是我们想要的,确认之后选中指定的时间点,右键选择revert,就可以回到那个版本。
惊不惊喜,意不意外
当然webstorm也可以和本地Git或着其他的集中式、分布式版本控制系统绑定,相当的方便,但是在操作项目之前一定要先试试水
随后我有想知道其他IDE有没有类似的功能——
在网上一查,发现sublime有一个插件叫GitGutter,它是一个兼容Sublime Text 2 或者Sublime Text 3 的插件,它可以在行数的前面显示那一行是被增加,修改还是删除。由于本人PC没有配置sublime相关的环境,在此就不做具体介绍了