为什么git在提交ID前面加上字母';g';?
git descripe的典型输出如下所示为什么git在提交ID前面加上字母';g';?,git,Git,git descripe的典型输出如下所示 some-tag-32-gf31f980 其中,some tag是一个标记名,32表示所描述的提交是使用该标记提交后的32次提交,gf31f980表示提交ID唯一缩写为f31f980 我的问题是关于gf31f980中的g。为什么在那里?我的第一个想法是插入它是为了消除对git descripe输出的解析的歧义。但我想不出在任何情况下,它实际上有什么帮助。例如,32组件可能会被省略,并且无法知道上面的输出描述了在标记some-tag之后的提交32,而不
some-tag-32-gf31f980
其中,some tag
是一个标记名,32
表示所描述的提交是使用该标记提交后的32次提交,gf31f980
表示提交ID唯一缩写为f31f980
我的问题是关于gf31f980
中的g
。为什么在那里?我的第一个想法是插入它是为了消除对git descripe
输出的解析的歧义。但我想不出在任何情况下,它实际上有什么帮助。例如,32
组件可能会被省略,并且无法知道上面的输出描述了在标记some-tag
之后的提交32,而不是在标记some-tag-32
处的提交。但是g
对此没有帮助
只提取提交ID的正则表达式匹配可以搜索/-g([0-9a-f]+)$/
。没有简单的方法来简化这一点;例如,您不能执行/-g(.*)$/
,因为这可能会错误地匹配标记名中的g
。没有g
你仍然可以做/-([0-9a-f]+)$/
,所以g
对你没有帮助。非正则表达式解析过程的行为将类似
显式生成g
;相关的源代码(在内置/descripe.c
的第240行附近)是:
static void show_后缀(int-depth,const unsigned char*sha1)
{
printf(“-%d-g%s”,深度,find_unique_abbrev(sha1,abbrev));
}
很难搜索有关这方面的信息,因为相关的术语,g
,是一个停止词
什么是g
“g”前缀代表“git”,是
用于根据软件所使用的SCM描述软件版本
管理与
对于Git 2.33(2021年第3季度),在“-g
”前缀上有更多的内容(在:
参见(2021年5月17日)作者。(于2021年6月10日合并) :澄清缩写的默认长度 签字人:安德斯·赫克斯滕 澄清git Descripte中用于提交的缩写形式的默认长度 该行为在Git2.11.0中进行了修改,但没有更新文档以澄清新的行为
git descripe
现在在其
而不是使用默认的十六进制数字数(即
将根据存储库中对象的数量而有所不同
缩写对象名称的默认值为7),使用
数字,或
形成唯一对象名称所需的位数
git descripe
现在在其
哈希后缀是“-g”+tip commit的明确缩写
母公司(其为2414721b194453f058079d897d13c4e377f92dc6
)
缩写的长度随着存储库的增长而扩展,使用
存储库中对象的大致数量和一点数学知识
围绕生日悖论,默认值至少为7
仅供参考,在中使用
git grep-E“\bg\b”Documentation/git descripe.txt
返回相关行作为第二个结果。与普通grep-E“\bg\b”Documentation/git descripe.txt相同。正则表达式模式\b
,它将匹配“g”等内容
和诸如此类的g诸如此类的
。在谷歌出现之前,就有grep
;)
有没有删除g的方法?