我发现很难全神贯注于Git如何创建完全独特的哈希,即使在前4个字符中也不允许相同。我可以仅使用前四个字符在Git Bash中调用提交。在算法中是否特别确定第一个字符是“超”唯一的,并且永远不会与其他类似的哈希冲突,或者该算法是否以相同的方式生成哈希的每个部分?
Git使用以下信息来生成sha-1:
(有关完整说明,请参见此处)。
Git 不 保证前四个字符是唯一的。在Pro Git书的第7章中写道:
Git可以为您的SHA-1值找出一个简短的唯一缩写。如果将–abbrev-commit传递给git log命令,则输出将使用较短的值,但保持它们唯一。它默认使用七个字符,但在必要时将它们延长以保持SHA-1的明确:
因此 ,只要 保持唯一性,Git都会 尽可能地 缩写。他们甚至注意到:
通常,八个到十个字符足以在一个项目中唯一。 例如,Linux内核是一个相当大的项目,具有超过450k的提交和360万个对象,没有两个对象的SHA-1重叠超过前11个字符。
通常,八个到十个字符足以在一个项目中唯一。
例如,Linux内核是一个相当大的项目,具有超过450k的提交和360万个对象,没有两个对象的SHA-1重叠超过前11个字符。
因此,实际上,它们仅取决于具有完全相同的(a的X个首字符)sha 的极大 可能性 。