如何在Git中找到分支的哈希?
给定本地/远程分支名称,如何获取该分支指向的提交的哈希值?该命令是您的朋友,例如:如何在Git中找到分支的哈希?,git,Git,给定本地/远程分支名称,如何获取该分支指向的提交的哈希值?该命令是您的朋友,例如: $ git rev-parse development 17f2303133734f4b9a9aacfe52209e04ec11aff4 。。。或对于远程跟踪分支: $ git rev-parse origin/master da1ec1472c108f52d4256049fe1f674af69e785d 此命令通常非常有用,因为它可以解析在git中指定分支名称的任何方法,例如: 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}
。。。等。散列存储在
.git/refs/
下,例如.git/refs/heads/master
但编程上使用Mark Longair建议的
git rev parse
,因为这样更安全。不要忘记,自git 2.19(2018年第2季度)以来,git准备从SHA1哈希转换到SHA2:请参阅“”
Git2.25(2020年第1季度)发展并反映了可能的新哈希
参见,,,,,,(2019年10月28日)和,(2019年10月5日)作者。(于2019年11月10日合并) :添加<代码>--显示对象格式选项 签字人:brian m。卡尔森 添加选项以打印用于输入、输出或存储的对象格式。
这允许shell脚本发现正在使用的哈希算法 由于过渡计划允许多个输入算法,请记录我们可能提供多个输入结果以及结果可能采用的格式。
虽然我们现在不支持这一点,但尽早记录这一点意味着脚本作者可以在将来验证他们的脚本 目前的方案包括: 显示存储库用于存储在
.git
目录、输入或输出中的对象格式(哈希算法)。
对于输入,可以打印多个算法,空格分隔。
如果未指定,则默认为“存储”
使用Git2.29(2020年第4季度),您可以确定必须使用何种格式来读取分支(或任何其他对象)的哈希提交 参见,,,,,,,,,,,,,,(2020年7月29日)作者。
参见(2020年7月29日)作者 (由年合并,2020年8月11日) :为扩展添加文档。objectFormat 签字人:brian m。卡尔森
审核人:Eric Sunshine 记录
extensions.objectFormat
config设置。警告用户不要自己修改它
git config
现在在其
extensions.objectFormat
指定要使用的哈希算法
可接受的值为sha1
和>sha256
如果未指定,则假定为sha1。
除非
core.repositoryFormatVersion
为1,否则指定此键是错误的
请注意,此设置只能由git init
或
git克隆
在初始化后尝试更改它将不起作用,并且将产生难以诊断的问题
需要明确的是,在Git 2.29(2020年第4季度)中,最近添加的SHA-256支持在文档中标记为“实验性” 参见作者(2020年8月16日)
(由年合并,2020年8月24日) :将
--对象格式=sha256
标记为实验
签字人:马丁·奥格伦
在(“repository
:默认启用SHA-256支持”,2020-07-29,Git v2.29.0——中列出)之后,Git的普通版本允许用户运行,例如
git init --object-format=sha256
然后离开。这是获得SHA-256世界经验的一个好方法,例如,找到
GIT_TEST_DEFAULT_HASH=sha256 make test
没有斑点
但这确实是一个独立的世界:这样的SHA-256回购协议将与(目前相当大的)SHA-1回购协议完全分离。跨境互动原则上是可能的,例如通过“
diff
+apply
”(或“format patch
+am
”)进行,但即使这样也有其局限性:在简单的情况下,在SHA-1回购中应用SHA-256 diff是可行的,但如果你需要求助于-3
,那你就倒霉了
类似地,“push
+pull
”应该可以工作,但实际上,您的操作与世界其他地方的操作基本上是相互抵消的。当您初始化存储库时,这可能是正常的,在之后的几个月内也可能是正常的,但总有一天您会开始后悔使用了[
git init--object format=sha256](https://github.com/git/git/blob/ff233d8dda12657a90d378f2b403bc6c85838c59/Documentation/git-init.txt#L52)([男](https://git-scm.com/docs/git-init#Documentation/git-init.txt---object formatltformatgt))
并且已经把自己挖进了一个相当深的洞
目前,有一些主题正在编写有关SHA-256的数据格式和协议的文档,在某些情况下(midx和commit graph),我们正在考虑调整文件格式如何指示要使用的对象格式
在我们的文档中提到的--对象格式
的地方,让我们明确一点,将其与“sha256”一起使用是实验性的。如果我们以后需要解释为什么我们不能处理我们在2020年生成的数据,我们总是可以指向我们在这里添加的这一段 通过“include::”-添加一个小的模糊,我们应该能够在整个文档中保持一致,并最终能够逐渐降低此文本的严重性。
有一天,我们甚至可能会用它来逐步淘汰
--object format=sha1
,但我们不要超越自己
还有扩展。objectFormat
,但只提到了三次。两次我们添加了这个新的免责声明,第三次我们已经有一个“请勿编辑”警告。从那里,感兴趣的读者应该最终找到我们在这里添加的这个新的
因为GIT\u DEFAULT\u HASH
提供了此功能的另一个入口点,所以也要记录它的实验性质
git
现在在其
改为使用。默认值为“sha1”。此变量为
实验性!请参见--对象格式
GIT_TEST_DEFAULT_HASH=sha256 make test