git图形化工具GitKraken的使用——版本回退(reset)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mr_wuch/article/details/73385992

版本回退Reset

先来介绍git命令回退,首先看下commit日志,你可以用命令 git log 查看,也可以在GitKraken查看

这里写图片描述

这里写图片描述

执行回退或者叫重置命令:

$ git reset <参数> <要回退到的版本>

这里要知道版本怎么填,在git中用 HEAD 表示当前最新版本,也就是上图log中的最后一次提交:
commit 3443e68f3fddef30c2667bdc3f80277651825ea1
回退到上一个版本就是 HEAD^,上上个版本就是 HEAD^^,一次类推,当然太多的话这样写就麻烦了,比如说前100个版本,可以这样写 HEAD~100

现在回退到上一个版本:

$ git reset --hard HEAD^

然后可以从GitKraken上看到版本回退了:

这里写图片描述

这里 --hard 是一个参数,还有两个常用的参数,先来看一张图:

这里写图片描述

这三个参数比较常用:

  1. –hard:直接将当前版本重置的干干净净,工作区和暂存区都完全重置,包括还没有提交的更改
  2. –soft:仅仅把HEAD只想要重置道德版本,将之前的版本保留在暂存区
  3. –mixed(默认参数):将之前的版本保留在工作区

所以用 --hard 的时候要小心
上图中红色箭头reset操作其实可以再加上一个从Stage/Index指向Working directory,也就是前面一节讲的从暂存区到工作区

说了这么多,对应在GitKraken上的操作在哪里呢?看下图:

这里写图片描述

在目标版本处右击就会看到,这里也只是列出了常用的三个参数。

还有两个参数是:--merge--keep,基本上不怎么用

不小心 –hard 了怎么办,还能不能回到之前的版本

不要着急,在命令行找到之前的log,找到你重置的版本的commit id

这里写图片描述

还是执行reset操作:

$ git reset --hard 99b95dbea... # 这个版本号可以不用填写完整,Git自动会去找,当然尽量多写几位

然后再去log中查看,可以看到之前被重置的版本又回来了

其实,在git内部有个指向当前版本的指针,当你执行回退操作的时候,只是把指针指向了另一个版本,所以你让HEAD指向哪个版本号,你就把当前版本定位在哪,这就方便多了。

当然还有一个问题,那就是假如我执行完回退操作后又把命令行关闭了,或者直接关机了,下次再来又想返回之前的版本怎么办?
不要急,还是有解决办法的,Git提供了一个命令 git reflog 用来记录你的每一次命令:

这里写图片描述

可以看到在重置之前的版本id为 99b95db ,那么现在可以执行git reset --hard 99b95db 来返回之前的版本。

不过以上的操作好像在GitKraken中不能进行,因为执行充值后log区域看不到之前版本的id,所以不能完全依靠它,我们有时候需要结合命令行使用。

本节小结

  1. git中的 HEAD 指向的版本就是当前的版本,使用命令 git reset <--hard> commit ID 来改变 HEAD 的指向。
  2. 通过 git log 命令可以查看提交历史,这里面有我们用到的commit ID,当然用GitKraken查看log会一目了然。
  3. 如果要返回之前的版本,但是之前的commit ID又给忘了,可以使用 git reflog 查看历史操作记录。

撤销、回退总结

至此,加上前两节的一些介绍,撤销、回退的常用常用操作已经介绍完毕,总结一下:

  1. 当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,执行命令 git checkout -- <file>..., 或者在GitKraken中点击 Discard all changes(如果是单个文件,就右击那个文件,点击Discard changes)。
  2. 当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令 git reset HEAD <file>...,就回到了场景1,第二步按场景1操作,如果只是想从暂存区撤销,那只需执行第一步。
  3. 已经提交了不合适的修改到版本库时,想要撤销本次提交,就用本小结介绍的操作。

参考文章

廖雪峰的官方网站-Git教程

猜你喜欢

转载自blog.csdn.net/mr_wuch/article/details/73385992
今日推荐