• git 命令(补充篇)的本质理解


    1 标签, git tag tag_name SHA

    • 本质: 在某次commit 上打上标签tag_name ,标签在代码库中起着“锚点”的作用。 注意: commit 由 SHA、缺省HEAD(当前) 指定。

    • 命令:

    $  git tag V0 8d59682bed           ## 打上版本标签
    $  git log V0                              ## 直接操控V0 ,等价于 git log 8d59682be
    
    • 补充:Git Describe 能帮你在提交历史中移动了多次以后找到方向;当你用 git bisect(一个查找产生 Bug 的提交记录的指令)找到某个提交记录时,或者是当你坐在你那刚刚度假回来的同事的电脑前时, 可能会用到这个命令。

    2. git describe

    git describe 的​​语法是:

    git describe

    可以是任何能被 Git 识别成提交记录的引用,如果你没有指定的话,Git 会以你目前所检出的位置(HEAD)。

    它输出的结果是这样的:

     <tag>_<numCommits>_g<hash>
    

    tag 表示的是离 ref 最近的标签, numCommits 是表示这个 ref 与 tag 相差有多少个提交记录, hash 表示的是你所给定的 ref 所表示的提交记录哈希值的前几位。

    当 ref 提交记录上有某个标签时,则只输出标签名称

    3. 选择父提交记录 ^ ,有多个父亲时候,后面跟数字表示第几次提交

    • 本质: 操作符 ^ 与 ~ 符一样,后面也可以跟一个数字。 但是该操作符后面的数字与 ~ 后面的不同,并不是用来指定向上返回几代,而是指定合并提交记录的某个父提交。还记得前面提到过的一个合并提交有两个父提交吧,所以遇到这样的节点时该选择哪条路径就不是很清晰了。

    • 命令:操作符 ^ 与 ~ 符一样,后面也可以跟一个数字。 含义不同
      Git 默认选择合并提交的“第一个”父提交,在操作符 ^ 后跟一个数字可以改变这一默认行为。

    • 示例 1:

    $  git checkout master^                 ## HEAD 在当前分支,当前位置第一个父亲记录
    

    执行前,图3.1

    执行后,图3.2

    • 示例2:
     $  git checkout master^2                 ## HEAD 在当前分支,当前位置第2个父亲记录
    

    执行前,如图3.1

    执行后,图3.3

    • 示例3: 综合示例
    $  git checkout HEAD~                  ## HEAD 从当前位置C7   向上移动1个记录, 到 C6
    $  git checkout HEAD^2                ## HEAD 从当前位置C6   移动到第2个父亲记录,到 C5
    $  git checkout HEAD~2                ## HEAD 从当前位置C5   向上移动2个记录, 到 C3
    

    上述命令,等价于以下命令

    $  git checkout HEAD~^2~2
    
    执行前,图3.4
    执行后,图3.5
  • 相关阅读:
    寄存器详解
    Sleep(0)的妙用
    源码分析之Dictionary笔记
    ASP.NET Core框架的本质
    Dictionary实现(收藏的)
    微软的判断一个数是不是质数的算法
    C#性能优化:延迟初始化Lazy
    C#3 分部方法,简单标记一下
    单例下并发的情况下访问私有变量的一个典型问题
    BeforeFieldInit的小叙
  • 原文地址:https://www.cnblogs.com/juking/p/7109940.html
Copyright © 2020-2023  润新知