可能重複:
How much space do I need for Git vs SVN?Git是否需要比SVN更多的空間?
據我所知Git和SVN之間的一個重要區別是:「SVN是增量存儲系統 - 它存儲一個之間的差異提交和下,而Git沒有這樣做 - 它會在每次提交時存儲項目中所有文件在樹結構中的樣子。
那麼,這是否意味着Git需要比SVN更多的空間,因爲它存儲所有快照而不是增量?
可能重複:
How much space do I need for Git vs SVN?Git是否需要比SVN更多的空間?
據我所知Git和SVN之間的一個重要區別是:「SVN是增量存儲系統 - 它存儲一個之間的差異提交和下,而Git沒有這樣做 - 它會在每次提交時存儲項目中所有文件在樹結構中的樣子。
那麼,這是否意味着Git需要比SVN更多的空間,因爲它存儲所有快照而不是增量?
實際上,.git
目錄比.svn
小,因爲git壓縮數據的好處並且由於它的設計而不會保留一些無用的快照。它也使用deltas!
我認爲你已經倒退了,至少就它在磁盤上如何擺脫了它。
使用SVN,您簽出的每個分支都是完整副本加上增量。所以兩個分支意味着兩個完整的文件集加上所有的SVN diff信息。另一方面,Git保留文件的單個副本以及包含差異信息的所有快照。因此對於多個分支,Git將始終更小。
在GIT中保存在磁盤上的對象被稱爲 鬆散對象格式的初始格式。然而,偶爾Git會將這些對象的幾個部分打包到一個稱爲packfile的二進制文件中,以便節省空間並提高效率。如果您手動運行git gc命令,或者如果您推送到遠程服務器,則Git會執行此操作,前提是您周圍有太多鬆散的對象 。
正如你可以看到Git並不總是單獨存儲文件的每個版本並使用差異。另外,Git使用zlib壓縮每個文件,至少對於純文本源代碼文件是非常有效的。
仍然很難確定Git是否使用比SVN更多或更少的空間。其中一個原因是,SVN只在本地存儲最後一個版本,而git則在機器上擁有完整的存儲庫副本。因此,您無法將SVN中一個版本使用的空間與Git中完整存儲庫使用的空間進行比較。
將服務器上SVN倉庫使用的空間與空間Git倉庫進行比較,至少取決於存儲在其中的特定修訂歷史和文件類型。