Git中的blob是否真的是Binary Large Object的缩写?
Git的blob到底是不是"Binary Large Object"的缩写?
咱先给你个明确结论:不是。虽然很多第三方资料(包括一些开发者指南)都这么传,但这个说法和Git官方的术语定义完全不搭,具体原因可以拆成这几点看:
- 官方文档从未认可这个缩写:翻遍Git的核心手册、Pro Git官方书籍,甚至Git源码里的注释,都找不到任何把blob定义为"Binary Large Object"的内容。官方提到blob时,更多是把它作为存储原始二进制内容的对象的简称,重点在“二进制数据”,和“大”完全没关系。
- "Large"完全不符合实际:Git的blob可以是任何大小的文件——从几字节的配置文件、单行文本,到几GB的视频包都能存。日常用Git的人都知道,仓库里绝大多数blob都是小文件,用“Large”来定义它,显然站不住脚。
- Git术语体系里的blob有明确含义:在Git的对象系统里,blob是和commit、tree、tag并列的四种核心对象之一,它的唯一作用就是存储文件的原始内容,不管内容是什么、多大。源码里提到blob的地方,也全是围绕这个核心功能,从来没提过“大对象”的概念。
至于这个误解的来源,大概率是因为数据库领域里的BLOB确实是"Binary Large Object"的缩写,大家就想当然把这个定义套到了Git的blob上,但两者其实是完全独立的术语。
内容的提问来源于stack exchange,提问作者Boseong Choi
相关产品推荐
相关产品推荐

