git 中像"HEAD~1"这样的指针叫什么名字?

  • 本文关键字:quot 指针 HEAD 中像 git git
  • 更新时间 :
  • 英文 :


我知道HEAD~1表示提交HEAD的父级,HEAD^2表示提交HEAD的第二个父级。

git reflog开始,HEAD@{n}是一个gitrevision。

HEAD~nHEAD^nHEAD~3^2master~1cb2510e~1等指针有特殊的名字吗?它们的引用方式是否与分支指向特定提交的方式相同?它被称为相对参考吗?

我一直想看看,但没有成功。谁能说出一些启示?

我想说所有这些都是"git revisions"(或gitrevisions作为一个词)。请注意,所有这些都列在 gitrevisions 文档中。

不幸的是,该术语似乎也包含范围表示法,例如origin/master..master. 出于讨论目的,我们希望有一个特定于这种表达式的两半的术语,以便构造一个正式的语法。 Git 没有定义一个,所以你必须发明自己的。 最接近的似乎是短语扩展SHA-1语法,正如jsageryd所指出的那样。 这是一个特别糟糕的术语:尽管它很笨拙,但它太具体了,因为将 Git 从 SHA-1 转移到其他哈希算法需要长期的努力。

在内部,在 Git 的源代码中,有一个将其重命名为OID的举动,它代表ObjectIDentifier。 OID似乎是最合适的术语。 但是,在内部,这是针对完全解决的事情,目前是 160 位 SHA-1,最终会更大。 也许扩展了 OID?:-)

在 Git 项目中的 man gitrevisions 和提交消息中使用的术语是"扩展的 SHA-1 语法"。

虽然,我倾向于认为它的使用在很大程度上仅限于关于 Git 内部的技术讨论。我可能错了。

我看到的一个用于它们的名字是"revspec",它确实与"refspec"很好地配对,该配对用于描述获取和推送应该如何映射不同存储库中的引用名称。 我不记得我在哪里看到它,也不记得曾经使用过它,源代码上的 git grep 说它只出现在接收后的示例钩子中,谷歌搜索说其他人确实使用它。

我试图找出扩展的SHA-1语法---但这似乎是一个git的东西。也许这甚至意味着一点幽默:"规范"名称将是(abrrev.)SHA-1 名称。但是出于实际原因,您有HEAD(和@)和这种扩展(有点神秘)语法。

"指定修订"是gitrevisions的大标题。

修订参数通常<rev>(但不一定)命名提交对象。它使用所谓的扩展 SHA-1 语法。这里 是拼写对象名称的各种方法。在末尾附近列出的那些 名称树和提交中包含的 blob。

所以HEAD~1将是(=一种拼写方式)提交对象的名称,其(真实)名称为"7ah25e..."。

最新更新