给定本地/远程分支名称,我怎样才能获得该分支指向的提交的哈希值?
答案 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 fa26d5e,commit cf02be8,commit 38ee26b,commit 37ab8eb,commit 0370b35,commit 0253e12,commit 45e2ef2,{{3} },commit 79b0edc,commit 840624f,commit 32a6707,commit 440bf91,commit 0b408ca(2019年10月28日)和commit 2eabd38,commit 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
目录,输入或输出中。 对于输入,可以打印多个算法,以空格分隔。 如果未指定,则默认值为“存储”。