如何在多个项目之间共享.git文件夹?
我想使用Git存储库或子存储库 所以,这里是我所拥有的:如何在多个项目之间共享.git文件夹?,git,mercurial,git-submodules,mercurial-subrepos,Git,Mercurial,Git Submodules,Mercurial Subrepos,我想使用Git存储库或子存储库 所以,这里是我所拥有的: mkdir orig cd orig echo "osthuaosteh" > abc git init --shared git add abc git commit -m 'init' cd .. mkdir another 如何在另一个中初始化回购协议,使其与原始共享存储库 我需要一个大的库,我想包括作为一个子库。回购协议重数百兆,所以我想重复使用一些文件夹 更新:我希望能够在不同的工作文件夹中进行不同的修订。git子模块(
mkdir orig
cd orig
echo "osthuaosteh" > abc
git init --shared
git add abc
git commit -m 'init'
cd ..
mkdir another
如何在另一个中初始化回购协议,使其与原始共享存储库
我需要一个大的库,我想包括作为一个子库。回购协议重数百兆,所以我想重复使用一些文件夹
更新:我希望能够在不同的工作文件夹中进行不同的修订。git子模块(以及您的示例)将位于路径
中的另一个
:
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子模块--“帮助”?使用git子模块,这些子模块(以及您的示例)将位于路径
中的另一个
:
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子模块的帮助吗?我想问你的是:你真的需要共享存储库吗 与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,您可以使用
重新链接
扩展;git的等价物似乎也是。我想问你的是:你真的需要共享存储库吗
与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,您可以使用
重新链接
扩展;git的等价物似乎也是。我读了它,但不明白:另一个/orig
中的.git文件夹的(部分)是否会被共享?我只是想节省空间和拉流量。git子模块add../orig orig
=>remote(origin)没有在.git/config
中定义url。我不知道git status,说“无需提交”。子模块不一样(它们在hg中称为子存储库)。共享扩展在多个工作副本之间共享一个存储库。我阅读了它,但不明白:other/orig
中的.git文件夹的(部分)是否共享?我只是想节省空间和拉流量。git子模块add../orig orig
=>remote(origin)没有在.git/config
中定义url。我不知道git status,说“无需提交”。子模块不一样(它们在hg中称为子存储库)。共享扩展在多个工作副本之间共享一个存储库。澄清:共享扩展在多个工作副本之间共享一个存储库。@Laurens Holst:这正是我需要的。澄清:共享扩展在多个工作副本之间共享一个存储库。@Laurens Holst:这是正是我需要的。太好了!也将签出重新链接
。这与共享
不同,因为克隆现在是一个独立的存储库。我怀疑这里的问题是磁盘空间,而不是OP希望两个工作副本共享一个存储库。@PaulS:问题是因为subrepo太大了。库莱布隆的“这正是我所需要的”评论可能是对我的评论的回应,然后将其删除以充实到这个答案中。太棒了!也将签出重新链接
。这与共享
不同,因为克隆现在是一个独立的存储库。我怀疑这里的问题是磁盘空间,而不是OP希望两个工作副本共享一个存储库。@PaulS:问题是因为subrepo太大了。库莱布隆的“这正是我所需要的”评论可能是对我所做评论的回应,然后将其删除以充实到这个答案中。