3
我正在做一些有潛在危險的歷史重寫,所以我決定用--mirror
選項做一個克隆。我爲快速克隆操作感到驚訝。而且,不知何故,最終的回購不到1MB,而原始回購超過300MB(在git gc --aggressive
之後)。這怎麼可能? git clone --mirror
使用某種魔法?或者當我克隆時丟失數據--mirror
git鏡像克隆如此快速和小巧?
我用du -s
來查看它佔用了多少磁盤空間。
我正在做一些有潛在危險的歷史重寫,所以我決定用--mirror
選項做一個克隆。我爲快速克隆操作感到驚訝。而且,不知何故,最終的回購不到1MB,而原始回購超過300MB(在git gc --aggressive
之後)。這怎麼可能? git clone --mirror
使用某種魔法?或者當我克隆時丟失數據--mirror
git鏡像克隆如此快速和小巧?
我用du -s
來查看它佔用了多少磁盤空間。
的關鍵不在--mirror
選項,但在--local
一個,這是在同一個文件系統的克隆默認:
--local
[...] git的/對象/目錄下的文件硬連接 儘可能節省空間。
所以這兩個存儲庫實際上共享磁盤空間。
您可以使用--no-hardlinks
克隆並檢查生成的大小。
@Memming:不,硬鏈接不是_copy-on-write_。但是這不應該影響git操作。 Git足夠聰明,因此在存儲庫中沒有任何操作(除了文件損壞),這會影響克隆的操作。請注意,這對於使用'--local'克隆的存儲庫是正確的,但不能用'--shared'。 – rodrigo