Git需要比SVN更多的空间吗?

Dag*_*ang 5 git

可能重复:
Git与SVN需要多少空间?

据我所知,Git和SVN之间的一个重要区别是:"SVN是增量存储系统 - 它存储一个提交和下一个提交之间的差异,而Git不这样做 - 它存储了你的所有文件的快照每次提交时,项目看起来都像树结构一样.

那么,这是否意味着Git需要比SVN更多的空间,因为它存储所有快照而不是delta?

Mat*_*ics 6

我认为你倒退了,至少它是如何在磁盘上震动的.

使用SVN,您签出的每个分支都是完整副本和增量.因此,两个分支意味着两个完整的文件集PLUS所有SVN差异信息.

另一方面,Git保留文件的单个副本以及包含diff信息的所有快照.所以对于多个分支,Git总是会更小.


KL-*_*L-7 5

来自Pro Git章节“Packfiles”

Git 在磁盘上保存对象的初始格式称为松散对象格式。然而,Git 有时会将其中几个对象打包到一个称为 packfile 的二进制文件中,以节省空间并提高效率。如果周围有太多松散对象、手动运行 git gc 命令或者推送到远程服务器,Git 就会执行此操作。

正如您所看到的,Git 并不总是单独存储文件的每个版本,并且也会使用差异。此外,Git 使用 zlib 压缩每个文件,这至少对于纯文本源代码文件非常有效。

不过,要确定 Git 使用的空间是否比 SVN 多还是少仍然不容易。原因之一是 SVN 仅在本地存储最后的修订版本,而使用 git,您可以在计算机上拥有存储库的完整副本。因此,您无法将 SVN 中的一个修订版使用的空间与 Git 中完整存储库使用的空间进行比较。

将服务器上 SVN 存储库使用的空间与 Git 存储库空间进行比较,至少很大程度上取决于特定的修订历史记录和存储在其中的文件类型。


Cyd*_*ia7 1

实际上,.git目录比 git 更小,.svn因为 git 可以很好地压缩数据,并且由于其设计,不会在其中保留一些无用的快照。而且它也使用增量!