为什么git将文件内容存储为blob?

时间:2018-02-24 04:37:02

标签: git blob

这个问题看起来似乎微不足道,但我很难想出将文件内容存储为blob而不仅仅是原始格式(例如文本文件)的明确优势。

通常,使用blob代替媒体的其他存储格式:图像,视频,音频等git,至少我看到它常用的方式,通常跟踪文本文件的修订而不是多媒体。

正式总结:将文件内容存储为blob(转换为二进制数据)而不是修订版的原始格式(例如将其保留为文本)有什么好处?

1 个答案:

答案 0 :(得分:8)

“Blob”只表示一个字节序列。 Git中的blob将包含与文件完全相同的数据,只是blob存储在Git对象数据库中,文件存储在文件系统中。

因此格式没有区别,唯一的区别在于它们的存储方式。

例如,如果您将图像hello.jpg添加到存储库,然后提交它,那么您将拥有相同数据的两个副本:

  • 您将在磁盘上有一个名为hello.jpg文件,其中包含JPEG数据,

  • 您的Git对象数据库中将有一个 blob ,以其内容的哈希命名,其中包含相同格式的完全相同的 JPEG数据

数据库可以使用一些花哨的技巧来有效地存储数据,包括压缩和使用增量,但最终它仍然存储与原始文件中完全相同的数据。

文本文件也不例外。 “Text”只是您可以存储在二进制文件中的特定类型的数据。