据我所知,Git和SVN之间的一个重要区别是:“SVN是增量存储系统 - 它存储了一个提交和下一个提交之间的差异,而Git没有这样做 - 它存储了所有内容的快照每次提交时,项目中的文件都在树形结构中。
那么,这是否意味着Git需要比SVN更多的空间,因为它存储了所有快照而不是delta?
答案 0 :(得分:6)
我认为你已经倒退了,至少它是如何在磁盘上震动的。
使用SVN,您签出的每个分支都是完整副本和增量。因此,两个分支意味着两个完整的文件集PLUS所有SVN差异信息。
另一方面,Git保留了文件的单个副本以及包含差异信息的所有快照。所以对于多个分支,Git总是会更小。答案 1 :(得分:4)
Git将对象保存在磁盘上的初始格式称为a 松散的对象格式。但是,偶尔Git打包几个 这些对象分成一个名为packfile的二进制文件 节省空间,提高效率。如果你有太多,Git会这样做 如果你手动运行git gc命令,或者是否 你推到远程服务器。
正如您所看到的,Git并不总是单独存储文件的每个版本,也会使用差异。另外,Git使用zlib压缩每个文件,这对于纯文本源代码文件至少非常有效。
仍然不容易确定Git是否使用比SVN更多或更少的空间。其中一个原因是SVN仅在本地存储最后一个版本,而使用git,您可以在计算机上拥有存储库的完整副本。因此,您无法将SVN中一个修订使用的空间与Git中完整存储库使用的空间进行比较。
将服务器上的SVN存储库使用的空间与空间Git存储库进行比较至少取决于特定的修订历史记录和存储在其中的文件类型。
答案 2 :(得分:0)
实际上,.git
目录小于.svn
因为git压缩数据并且由于其设计而不会保留一些无用的快照。它也使用了增量!