首页 > 解决方案 > 默认 git log 缩写格式长度

问题描述

正如git log abbrevified format length中已经回答的那样,可以更改 git log 中 %h 的长度。但是,我的问题是默认长度存储在哪里?

我定义了一个这样的 git 别名:

hist = log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short

虽然我git hist在两个不同的存储库中使用,一个显示 9 个字符的哈希缩写,而另一个显示 7 个字符,就像大多数其他存储库一样。

标签: git

解决方案


core.abbrev如果你设置了,Git 会读取设置。如果不是,或者如果您将其设置为文字 string auto,则默认值是根据 Git 存储库中对象的数量动态计算近似值- 嗯,该数字的近似值,长度适合正如Lasse V. Karlsen评论中指出的那样。

git config文档是这样描述的:

core.abbrev
      设置长度对象名称的缩写。如果未指定或设置为“auto”,则会根据存储库中打包对象的大致数量计算适当的值,希望这足以让缩写的对象名称在一段时间内保持唯一性。最小长度为 4。

你提到你有:

...两个不同的存储库,一个显示 9 个字符的哈希缩写 [vs 更常见的 7]

7 是内部计算的默认最小值(它使用近似对象计数的 log2 的粗略近似值);有 9 的那个必须比其他有更多的对象。正如文档所说,目标是生成一个即使存储库增长也仍然有效的缩写,所以如果现在估计为 9,那么现在 7 很有可能仍然有效但到明年可能不会。


推荐阅读