Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么git将文件内容存储为blob?_Git_Blob - Fatal编程技术网

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

为什么git将文件内容存储为blob?,git,blob,Git,Blob,这个问题似乎很难回答,但我很难想出将文件内容存储为blob而不仅仅是其原始格式(例如文本文件)的确切优势 通常,BLOB用于替代媒体的其他存储格式:图像、视频、音频等。git,至少在我看来,它通常用于跟踪文本文件的修订,而不是多媒体 正式总结:将文件内容存储为blob(转换为二进制数据)而不是修订版的原始格式(例如,保留为文本)有什么好处?“blob”只是指一个字节序列。Git中的blob将包含与文件相同的精确数据,只是blob存储在Git对象数据库中,而文件存储在文件系统中 所以在格式上没有区

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

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


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

“blob”只是指一个字节序列。Git中的blob将包含与文件相同的精确数据,只是blob存储在Git对象数据库中,而文件存储在文件系统中

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

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

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

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

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


文本文件也不例外。“文本”只是一种特殊类型的数据,可以存储在二进制文件中。

您所说的修订版的原始格式是什么意思?无论文件内容是否为文本文件,它都只是一个字节序列。这个字节序列在Git中称为blob。blob确实存储原始内容。这就是它的意思。在过去的日子里(直到今天),在数据库世界中,数据库中的条目通常有(have)类型。在这里,有人发明了二进制大对象这个术语,意思是“未解释的数据”。Linus Torvalds是Git中使用的术语,但上下文并不完全相同。请注意,Git还将其他内容存储为blob,特别是符号链接的目标存储为blob对象。