前情提要:正在学习git,了解到它是通过sha-1散列对提交的内容进行计算和校验的。使用git过程中注意到,例如某次提交获得的散列值为2b5284d55c6b71ce9df89a00008319f93e722596
,但是同时提供了该散列值的前几位2b5284d55c
作为短信息(我自己这么叫)。
问题:git是如何保证协作过程中,产生的短信息不会与其他人的某次提交产生的短信息一致的? 或者即使短信息一致,git也有某种方式可以准确识别出来提交的信息?
前情提要:正在学习git,了解到它是通过sha-1散列对提交的内容进行计算和校验的。使用git过程中注意到,例如某次提交获得的散列值为2b5284d55c6b71ce9df89a00008319f93e722596
,但是同时提供了该散列值的前几位2b5284d55c
作为短信息(我自己这么叫)。
问题:git是如何保证协作过程中,产生的短信息不会与其他人的某次提交产生的短信息一致的? 或者即使短信息一致,git也有某种方式可以准确识别出来提交的信息?
2 回答1.2k 阅读✓ 已解决
3 回答1.8k 阅读
2 回答1.2k 阅读
1 回答1.1k 阅读
2 回答940 阅读
764 阅读
1 回答233 阅读
经过一番检索,找到了一些有关的内容,Git 里的 hash 值主要由这几部分组成。
来源:How is git commit sha1 formed
根据 Pro Git 上的描述,这个 hash 值出现碰撞的可能性极低。
当然,也有人弄出来了,参考:How would Git handle a SHA-1 collision on a blob? - Stack Overflow
这篇回答参考自:How would Git handle a SHA-1 collision on a blob? - Stack Overflow