Git使用以下信息来生成sha-1:
- 提交的源树(展开到所有子树和blob)
- 父提交sha1
- 作者信息(带时间戳)
- 提交者信息(正确的,那些是不同的!,还有时间戳)
- 提交消息
(有关完整说明,请参见此处)。
Git 不 保证前四个字符是唯一的。在Pro Git书的第7章中写道:
Git可以为您的SHA-1值找出一个简短的唯一缩写。如果将–abbrev-commit传递给git
log命令,则输出将使用较短的值,但保持它们唯一。它默认使用七个字符,但在必要时将它们延长以保持SHA-1的明确:
因此 ,只要 保持唯一性,Git都会 尽可能地 缩写。他们甚至注意到:
通常,八个到十个字符足以在一个项目中唯一。
例如,Linux内核是一个相当大的项目,具有超过450k的提交和360万个对象,没有两个对象的SHA-1重叠超过前11个字符。
因此,实际上,它们仅取决于具有完全相同的(a的X个首字符)sha 的极大 可能性 。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)