如何在多个项目之间共享一个.git文件夹



我想使用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-copy1repo-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吗?

相关内容

  • 没有找到相关文章

最新更新