我想使用Git存储库或子存储库like in Mercurial Share extension。
所以,这就是我所拥有的:
mkdir orig
cd orig
echo "osthuaosteh" > abc
git init --shared
git add abc
git commit -m 'init'
cd ..
mkdir another
如何在another
中初始化仓库,以便与orig
共享存储库?
我需要这个我想要包含在子库中的大型库。 repo重达数百兆,所以我想重用一些文件夹。
更新:我希望能够在不同的工作文件夹中进行不同的修订。
答案 0 :(得分:2)
我要问你的是:你真的需要共享存储库吗?
与Mercurial一样,当您进行本地克隆时,git会在存储库之间创建硬链接,从而导致额外的磁盘空间消耗很少。 E.g:
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等价物似乎也是called that。
答案 1 :(得分:1)
使用路径another
中的git-submodules(以及您的示例):
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
吗?