当GIT用完了修订版的哈希值时会发生什么?

当GIT用完了修订版的哈希值时会发生什么?,git,Git,当GIT用完了修订版的哈希值时会发生什么 并不是说这会很快发生,但理论上是可能的。根据 “如果您碰巧提交了一个对象,该对象的哈希值与存储库中的上一个对象的SHA-1值相同,Git将在您的Git数据库中看到上一个对象,并假定它已被写入。如果您在某个时候再次尝试签出该对象,您将始终获得第一个对象的数据。”我想这会帮助你更好地理解 我想你在现实世界中已经没有空间了;-) 不,这实际上是不可能的,理论上是可能的。Git使用SHA-1,我相信还没有为该算法产生实际的碰撞。并不是说它不会——它会的,根据固定

当GIT用完了修订版的哈希值时会发生什么

并不是说这会很快发生,但理论上是可能的。

根据


“如果您碰巧提交了一个对象,该对象的哈希值与存储库中的上一个对象的SHA-1值相同,Git将在您的Git数据库中看到上一个对象,并假定它已被写入。如果您在某个时候再次尝试签出该对象,您将始终获得第一个对象的数据。”我想这会帮助你更好地理解


我想你在现实世界中已经没有空间了;-)

不,这实际上是不可能的,理论上是可能的。Git使用SHA-1,我相信还没有为该算法产生实际的碰撞。并不是说它不会——它会的,根据固定长度摘要的定义。但这都是关于冲突的概率,甚至理论上也不可能:这些加密散列是散列,即在数据上计算的摘要,而不是guid或其他一些随机生成的值。所谓的散列冲突在理论上是有可能的,但在Git邮件列表上已经被反复讨论过很多次了,我建议你自己研究并阅读它们。由于git返回与前一个哈希相同的哈希值,那么它所在的存储库在前一次提交时也是相同的。这意味着没有伤害就是没有指向以前的提交。散列是由代码组成的,可能永远不会与不同代码上的另一个散列相同。如果是这样,您可以停止使用git。@Embed101,这不完全正确,存在哈希冲突,重要的是概率,10^-45是相当安全的赌注。