创建一个包含另一个git仓库的git仓库

9
我已创建了一个裸的 git 仓库(我们称之为仓库 #1)并进行了克隆。
在克隆体(仓库 #2)中,我创建了多个文件夹,其中一个我决定将其作为 git 仓库(仓库 #3)。
当我提交到仓库 #2 时,一切都按预期运行,但是仓库 #3 被忽略了(.git 文件夹和提交的文件)。
我该如何将仓库 #3 添加到仓库 #2 中,以便当我将仓库 #2 推送到仓库 #1 时,我可以创建一个单独的克隆仓库 #1,在其中还可以访问仓库 #3 的历史记录等内容?
换句话说,我如何创建一个包含另一个 git 仓库的 git 仓库?
5个回答

13

4

你不应该这样做。在仓库生命周期中,.git/目录下的元数据会发生变化,这些变化不一定意味着应该提交的“内容更改”:简单的git repack会更改.git目录下的文件,但这些更改不应该被提交。为什么你想这样做呢?


我正在使用父存储库(#2)来方便地备份它所包含的文件夹,其中包括存储库#3。所有内容都存储在USB驱动器上,这样我就可以轻松地将所有内容推送到我的备份位置(存储库#1)。目前似乎我只能手动复制文件夹进行备份。 - Peter Horne
如果你只是想备份所有存储库(包括工作副本),那么你可以使用一些不了解git及其结构的工具,例如mercurial或bazaar。正如wRAR所说,它会添加许多你不需要的东西,但如果你只想备份,那么这可能还可以。但你也可以编写一个脚本,遍历你的存储设备上的每个存储库并将其推送到服务器。 - Tomas Markauskas

2
在您的容器仓库根目录中,只需执行以下操作:
git submodule add https://github.com/yourusername/containedrepo.git containedrepo

这将克隆 containedrepo/containedrepo 目录中。从现在开始,您不应在 /containedrepo 目录中进行更改,而是应该在 containedrepo 中进行更改,然后再拉取它们。当您拉取主容器存储库时,它也会拉取所有子模块存储库,例如 containedrepo.git
这里有一个很棒的教程:https://github.com/NebuPookins/git-submodule-tutorial

2

请查看Git子模块

我从未使用过它,所以我只能提供一个链接...


2

我绝对不是GIT专家,但我认为你在指git子模块。

git submodule --help

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接