我知道HEAD~1
代表提交HEAD
的父级,HEAD^2
代表提交HEAD
的第二个父级。
来自git reflog
,HEAD@{n}
是gitrevision。
HEAD~n
,HEAD^n
,HEAD~3^2
,master~1
,cb2510e~1
等指针是否有特殊名称?它们是否以与分支指向特定提交相同的方式引用?它被称为相对参考吗?
我一直在努力寻找,但没有成功。任何人都能解释一下吗?
答案 0 :(得分:1)
我会说所有这些都是“git revisions”(或gitrevisions
作为一个单词)。请注意,所有这些都列在the gitrevisions documentation。
不幸的是,这个术语似乎也包含范围符号,例如origin/master..master
。出于讨论的目的,我们喜欢有一个特定于这种表达式的两半的术语,以便构造一个正式的语法。 Git没有定义一个,所以你必须创建自己的。最接近的似乎是短语扩展SHA-1语法,如jsageryd noted。这是一个特别糟糕的术语:尽管它很笨拙,但它太具体了,因为长期努力将Git从SHA-1转移到其他哈希算法。
在内部,在Git的源代码中,可以将这些内容重命名为OID
,代表 O 对象 ID entifier。 OID似乎是最合适的术语。但是,在内部,这是完全解决的问题,目前是160位SHA-1,最终会更大。也许扩展OID ? : - )
答案 1 :(得分:0)
在man gitrevisions和Git项目的提交消息中使用的术语是“扩展SHA-1语法”。
虽然,我倾向于认为它的用法大部分仅限于关于Git内部的技术讨论。我可能错了。
答案 2 :(得分:0)
我看到的用于他们的名字是“revspec”,它与“refspec”很好地配对,用于描述fetch和push应如何在不同的存储库中映射refnames的配对。我不记得我在哪里看过它,我不记得曾经使用过它,源代码上的一个git grep说它只发生在接收后的样本钩子里,googling说别人确实使用它。
答案 3 :(得分:0)
我试图找出有关扩展的SHA-1 语法的信息---但这似乎是一件麻烦事。也许这甚至带有一点幽默感:“规范”名称将是(缩写)SHA-1名称。但是出于实际原因,您具有HEAD(和@)以及这种扩展的语法(有点神秘)。
“指定版本”是gitrevisions
中的大标题。
修订参数
<rev>
通常(但不一定)命名为 提交对象。它使用所谓的扩展SHA-1语法。这里 对象名称的多种拼写方式。即将结束的那些 列表中包含提交中的树和斑点。
因此HEAD~1
将是(一个拼写方式)提交对象的名称,该提交对象的(真实)名称是“ 7ah25e ...”。