Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么git在提交ID前面加上字母';g';?_Git - Fatal编程技术网

为什么git在提交ID前面加上字母';g';?

为什么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,而不

git descripe的典型输出如下所示

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的方法?