zoukankan      html  css  js  c++  java
  • Git学习(四)----版本号跳转

    git log 、git reflog 、git reset

    Git版本号跳转:

             想实现版本号跳转,须要先了解Git的版本号的标记,也就是通过这个唯一的标记能定位一个版本号,也就是commit id。

             这个commit id是个挺长的字符串。由于它是通过SHA-1计算出来。

    (这个字符串就跟你硬盘里的某些磁力链接挺像的。嘿嘿嘿!),由于git是分布式的,所以每一个人电脑上都有完整代码。假设你更新了别人文件到本机上了。他提交的commit id是简单的自增数字(1,2,3....),就有可能会和你本机上的commit id冲突。那么就起不到定位的作用了哈。

    (对于想问“SHA-1能够做到不会反复吗?”的童鞋。你们去看看SHA-1的原理。最好把数字签名的原理也看了,都挺有意思的哈。再说,假设这个SHA-1码easy产生同样的话,你在使用那些个磁力链接时。就不就easy下错文件了嘛。)

            言归正传,首先,我们先查出全部版本号的commit id。输入:git log         (显示全部提交日志)

               

           这样看起来不方便,输入:git log --pretty=oneline

              

               前边黄色的长字符串就是commit id了。

           版本号跳转:git reset

               git reset 直接加 commit id 就能够实现版本号跳转(commit id不用全写,写到7位就能够了)

              

               可是当打开test2.txt文件时,发现文件根本没改变。(一脸懵逼)

               这个时候要相信程序,没有报错就说明操作没有错误,查询一下git的状态:git status

              

               这个时候就发现了。原来git内部记录已经回滚到指定日期的记录。仅仅是文件内部没有回滚,文件会作为已改动的文件将与“记录”不同的内容保存下来。

               假设想文件内容也回滚:git reset --hard 加上commit id

              

         查看操作git reflog

               假设。回滚之后突然发现这个版本号不行,还是要退回刚刚那个版本号,可是git log中已经不显示刚刚那个版本号的commit id了。

              

               这个时候就要用到:git reflog

              

               (我做了非常多次reset操作,主要看红箭头的记录即可。

               这个时候想回到add4,输入:git reset b1ca470

              

               git log 查看版本号信息

              

               git reflog查看操作信息

              


  • 相关阅读:
    headfirst设计模式(6)—单例模式
    headfirst设计模式(5)—工厂模式体系分析及抽象工厂模式
    headfirst设计模式(4)—工厂模式
    headfirst设计模式(3)—装饰者模式
    headfirst设计模式(2)—观察者模式
    headfirst设计模式(1)—策略模式
    BeanFactory 与 FactoryBean
    两个List集合取交集、并集、差集
    服务编排
    oracle报错ORA-01843: not a valid month
  • 原文地址:https://www.cnblogs.com/wgwyanfs/p/7261301.html
Copyright © 2011-2022 走看看