Git如何处理文件的增量

时间:2012-05-17 08:37:49

标签: git

从我能想到的,Git将文件的每个版本的内容存储在blob中,在带有文件名等的树中引用。 如果有3个文件具有完全相同的内容,则这三个文件将引用相同的blob。 新版本的文件有一个新的blob,其中包含文件的全部内容。

现在,由于Git不存储增量,而是将每个版本的文件的全部内容存储在单独的blob对象中,这是否会导致存储量增​​加?这是决定Git项目的主要问题吗? 另外,我对Git处理版本的理解是否正确?

1 个答案:

答案 0 :(得分:1)

在某个级别,git将对象存储为由其哈希索引的简单文件。如果签入了新版本的文件,它将获得一个新的哈希,从而获得一个带有全新文件的新blob。

在这个级别下,git可以将blob组合并压缩成这些包中的“包”blob,类似的可以通过delta压缩进行压缩。除了要求用户偶尔输入

git repack -a -d

或类似的,该过程对用户和存储结构是透明的。

在您的信使上尝试以上命令,看看它如何影响您的.git目录的大小。