我有一个主git存储库A,我们在主项目的子目录中使用另一个git存储库B中的源代码。 现在最好在这个使用过的子目录中的A存储库中检出B存储库。 如果其他人然后克隆了存储库,他当然应该获得我们的主存储库A,并在其中自动获取B存储库。
让我看一下目录结构:
+ main_repository - the root directory of the main Repository + src - directory containing the source + foreignRepo - this should be the root directory of another git repo + binaries + other
这必须在远程存储库中也是已知的,只是本地副本对我没有帮助,因为其他人检查了这一点并且必须能够编译所有东西。
答案 0 :(得分:24)
您需要了解Git submodules。
答案 1 :(得分:6)
您可以在不使用子模块的情况下嵌套两个git repo。假设ChildRepo是ParentRepo的子目录,都是git存储库。
+ ParentRepo
- ChildRepo
如果您向ChildRepo添加文件,ParentRepo将忽略它。提交时,它将被添加到ChildRepo。无法将ChildRepo中的文件添加到ParentRepo。
答案 2 :(得分:6)
在git 1.7.11及更高版本中使用git subtree
。 git subtree
is superior to git submodule因为:
git subtree
不要求您的存储库用户学习任何新内容,他们可以忽略您使用子树来管理依赖项的事实git subtree
不会添加git submodule
之类的新元数据文件(例如
.gitmodule
)此外,如果您需要detach a subtree of your existing repository into a new repository,git subtree split
可以为您提供帮助。