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

标签 git blob

这个问题似乎很难回答,但我正在努力想出将文件内容存储为 blob 而不仅仅是其原始格式(例如文本文件)的明确优势。

通常,blob 用于代替其他媒体存储格式:图像、视频、音频等。git,至少我认为它是常用的,通常跟踪文本文件的修订和不是多媒体。

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

最佳答案

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

所以格式上没有区别,唯一的区别是它们的存储方式。

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

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

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

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

文本文件也不异常(exception)。 “文本”只是一种特殊类型的数据,您可以将其存储在二进制文件中。

关于git - 为什么 git 将文件内容存储为 blob?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48959416/

相关文章:

git - 如何在 Git 中创建没有父项的提交?

Git Cherry-Pick 和冲突

linux - 处理 git 的行尾

python - pysqlite - 如何保存图像

javascript - 在表单中使用base64作为文件上传

linux - 将 Git Push 保存到输出文件

git: merge 分支并使用有意义的 merge 提交消息?

reactjs - 静态托管 - 使用 Azure CDN 的 Azure Blob 存储上的 ReactJS 应用程序

python - 从 BLOB mysql python 写入文件

javascript - FileSaver.js 和 Blob.js - 更改目录