如何在Git中找到分支的哈希值?

时间:2012-02-02 10:12:06

标签: git

给定本地/远程分支名称,我怎样才能获得该分支指向的提交的哈希值?

3 个答案:

答案 0 :(得分:100)

命令git rev-parse是你的朋友,例如:

$ git rev-parse development
17f2303133734f4b9a9aacfe52209e04ec11aff4

...或远程跟踪分支:

$ git rev-parse origin/master
da1ec1472c108f52d4256049fe1f674af69e785d

此命令通常非常有用,因为它可以解析在git中指定分支名称的任何方法,例如:

git rev-parse master~3
git rev-parse HEAD@{2.days.ago}

......等等。

答案 1 :(得分:4)

哈希值存储在.git/refs/下,例如.git/refs/heads/master

但是按照Mark Longair的建议以编程方式使用git rev-parse,因为它更安全。

答案 2 :(得分:1)

不要忘记,自Git 2.19(2018年第二季度)以来,Git准备了从SH1哈希到SHA2的过渡:请参阅“ Why doesn't Git use more modern SHA?

在Git 2.25(2020年第一季度)中,git rev-parse不断发展并反映出可能的新哈希值。

请参见commit fa26d5ecommit cf02be8commit 38ee26bcommit 37ab8ebcommit 0370b35commit 0253e12commit 45e2ef2,{{3} },commit 79b0edccommit 840624fcommit 32a6707commit 440bf91commit 0b408ca(2019年10月28日)和commit 2eabd38commit 1bcef51( 2019年10月5日)通过commit ecde49b
(由brian m. carlson (bk2204)Junio C Hamano -- gitster --中合并,2019年11月10日)

  

commit 28014c1:添加一个--show-object-format选项

     

签名人:brian m。卡尔森

     

添加一个选项以打印用于输入,输出或存储的对象格式。
  这样,shell脚本就可以发现正在使用的哈希算法。

     

由于过渡计划允许使用多种输入算法,因此请记录下我们可能会提供多种输入结果以及结果可能采用的格式。
  虽然我们现在不支持此功能,但将其记录下来意味着脚本作者可以在以后使用时对其脚本进行过时的证明。

rev-parse现在包括:

--show-object-format[=(storage|input|output)]:
     

显示用于存储库的对象格式(哈希算法),以存储在.git目录,输入或输出中。   对于输入,可以打印多个算法,以空格分隔。   如果未指定,则默认值为“存储”。