Git使用学习(七、版本回滚)

git版本回滚的原理

git中有一个全局变量叫HEAD,HEAD这个指针指向的版本就是当前版本。

如果我们需要调出某个版本的记录,需要让HEAD指针指向这个版本,然后再从本地仓库拉取到工作区间就可以了。

 

 

git进行版本回滚的方式有三种

  • 基于索引值(哈希值)的回滚
  • 基于^符号
  • 基于~符号

 

 

这里我们主要来说一下基于索引值的回滚。

 

这里要说一个命令,

git reset 

我们就是基于这个命令来进行版本前进和后退的。

使用方法通常是

git reset --hard  xxxxxxx

这个xxxxxxx就是哈希值的前几位

 

 

1.如何查看当前HEAD指向的版本

git reset --hard

如果不设置这个哈希值,那么就是打印出当前HEAD指向的版本。如下

 

2.如何回退到某个之前的版本

假设我们要回退到,更改内容为add ops comment这个版本,

我们只需要在git reset --hard后面加上这个版本的哈希值的前几位既可以了。如下

接下来只需要查看工作空间的内容就可以了,这个就是当时所在版本的内容。

 

查看HEAD所执行的版本,发现也没问题。

 

当然在目前这个版本向,最新提交的版本上切换也是一样的原理。

 

经过几次的版本切换,这个git reflig的历史日志就比较乱了。

切换到某个版本后,就会把这个版本的日志保留一下。这样会有重复的版本哈希值在上面显示,一般不利于查看。

使用其他方式测没有这个问题。

 

当然git log 的几种方式查看,还有一个要注意的,就是只能显示当前版本的qia前面的版本log信息。

可以看到,如果我们移动HEAD指针指向非最新的一个版本。使用git log及其变种,都是只能看到,当前版本更后的版本信息。

如果过要向当前版本更前面(如果有)的版本回滚,则还是要使用reflog找到之前的log中文件的的哈希值。

 

 

 

基于^符号的回滚

 

基于^符号的回滚,只能向后面版本回滚,不能向前面版本回滚。

 

假设我们要基于当前HEAD指针所在的版本,向后回滚一个版本。

向后回滚一个版本,HEAD后面的就一个^。向后回滚2个,在HEAD后面就使用两个^^。

 

 

基于~符号的回滚

 

和上面的基于^的只能向后的回滚一样,基于~的回滚也是只能向后回滚。

在回滚的版本很多的时候,一般不会写很多个^符号

一般会使用~回滚版本数。

 

假设我们要在当前版本,向后回滚3个版本。

可以看到是用git log --oneline   查看,相比使用之前,就减少了三个版本。

 

 

这里可能你们也看到了使用git log --oneline   查看的,第一行的版本,始终是HAED指针指向的版本,也就是工作空间的版本。

 

 

 

 

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔跑的小刺猬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值