0

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

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

4

1 回答 1

1

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

在此之下,git 可以将 blob 组合并压缩为“包”,这些包中的 blob 可以通过增量压缩进行压缩。除了要求用户偶尔输入

git repack -a -d

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

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

于 2012-05-17T08:51:51.090 回答