Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在多个项目之间共享.git文件夹?_Git_Mercurial_Git Submodules_Mercurial Subrepos - Fatal编程技术网

如何在多个项目之间共享.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子模块(

我想使用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太大了。库莱布隆的“这正是我所需要的”评论可能是对我所做评论的回应,然后将其删除以充实到这个答案中。