我要问你的是:你真的需要共享存储库吗?
与 Mercurial 一样,当您进行本地克隆时,git 会在存储库之间创建硬链接,从而只消耗很少的额外磁盘空间。例如:
git clone http://example.org/repo repo
git clone repo repo-copy1
git clone repo repo-copy2
repo-copy1
和存储库中的大多数文件repo-copy2
将硬链接到repo
,并且不会占用额外的磁盘空间。只有工作副本中的文件是实际副本。
您可以像这样确认此行为:
$ df -l
Filesystem 512-blocks Used Available Capacity Mounted on
/dev/disk0s2 976101344 217966872 757622472 23% /
$ git clone --no-checkout repo repo-copy
Cloning into repo-copy...
done.
$ du -cs repo-copy/.git
63528 .
63528 total
$ df -l
Filesystem 512-blocks Used Available Capacity Mounted on
/dev/disk0s2 976101344 217967536 757621808 23% /
如您所见,在克隆了一个 65880 块的存储库(每个 512 字节)后,文件系统上的块数仅减少了 664 个块。
如果您从远程服务器克隆(子)存储库,您可能必须手动创建指向其他本地克隆的硬链接;对于 Mercurial,您将为此使用relink
扩展名;git 等价物似乎也被称为 that。