我想使用Git存储库或子存储库,如Mercurial共享扩展
那么,这就是我所拥有的:
mkdir orig
cd orig
echo "osthuaosteh" > abc
git init --shared
git add abc
git commit -m 'init'
cd ..
mkdir another
如何初始化another
中的repo,使其与orig
共享存储库?
我需要这个大库,我想包括作为子存储库。这个repo重几百米,所以我想重用一些文件夹。
更新:我希望能够在不同的工作文件夹中有不同的版本
我想问您的是:您真的需要共享存储库吗?
与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的等价物似乎也被称为
与git子模块将(和您的示例)在路径another
:
git init # (to make another a git-repo)
git submodule add ../orig orig # to make orig a submodule of another
git commit # to commit the addition of the submodule
。你试过git submodule --help
吗?