Git 如何处理文件的增量



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

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

在一个级别上,git 将对象存储为按其哈希索引的简单文件。 如果签入文件的新版本,它将获得新的哈希,从而获得包含全新文件的新 Blob。

在此级别下,git 可以将 blob 组合并压缩为"包",这些包中的 blob 相似,可以使用增量压缩进行压缩。 除了要求用户偶尔键入

git repack -a -d

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

在您的资源上尝试上述命令,看看它如何影响.git目录的大小。

最新更新