You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git中ls-tree显示的blob对象SHA是否不唯一?

为什么不同Git文件会有相同的SHA值?

这其实是Git的正常设计,完全不用担心!

Git里的blob对象(用来存储文件内容的对象)的SHA-1值,是根据文件的实际内容计算出来的,和文件名、存储路径这些信息完全无关——文件名是被存在tree对象里的,不属于blob的一部分。

所以只要两个文件的内容100%完全一致,它们对应的blob对象就会是同一个,SHA值自然也一模一样。Git这么做是为了节省存储空间,避免重复存储相同的内容,是个很实用的优化机制。

拿你给出的例子来说:

  • exp2f-inputs和expf-inputs的内容肯定完全相同
  • fmaxf-inputs和fminf-inputs同理
  • log2f-inputs和logf-inputs也是内容一致

你可以自己验证一下:用命令git cat-file -p fc47072354934eb062321af9d1c4897244562b67查看这个SHA对应的内容,再对比这两个文件的本地内容,就能确认它们是完全一样的。

简单来说,Git对象的SHA唯一性是针对对象自身的内容的:同一个内容只会有一个SHA,不同文件名但内容相同的文件共享blob是合理且正常的特性,不是问题哦。

内容的提问来源于stack exchange,提问作者Mas Bagol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:22:59