当使用 git clone
从远程仓库克隆时,我可以给 git 一个提示,--reference
有一个类似的本地仓库,可以在其中找到并共享一些对象。这样可以节省网络带宽和存储成本。
但是,如果我已经有两个存储库,a
和b
,都是从远程克隆的。事后看来,我怎样才能达到效果,使a
表现得像是用--reference=b
克隆的?
(这不会节省带宽,但会释放一些磁盘空间。
仅使用 git-command
,我会
-
本地克隆
b
到c
(如果可能,通过硬链接重用常见对象)。 -
在
c
中,将a
添加为远程存储库,并从a
获取差异。在c
中创建所需的分支和远程。 -
将
a
替换为c
。
链接公共对象(rsync --hard-link
或cp -l
)和git-gc
应该有类似的事情。不过我没有完整的解决方案。