在某个目录中创建一个git存储库。添加该目录中的所有文件并提交它们。然后在父目录中创建另一个git存储库并添加所有文件。在其他地方克隆该存储库。请注意,克隆的存储库中缺少子存储库中的文件。如何让Git在嵌套存储库中添加所有文件?请注意,我不想要子模块 - 我也希望添加嵌套存储库中的文件。
答案 0 :(得分:1)
有可能你想要的东西非常像子模块(但可能不是文字子模块)。例如,拥有一个由N个子项目(N> 1)组成的大型项目似乎相当普遍,其中,出于良好的来源和/或组织原因,每个子项目都应该有自己的子项目git repo。
子模块允许你有一个大的“超级容器”,它只是调出所有的子模块:
super
sub1
sub2
sub3
这里每个子模块都是独立的(无论如何它都知道/关心),而“super”只收集这三个子模块。
问题在于,在开发过程中,您经常(但并非总是)想要,例如,每个子项目中的“最新分支devel
”。但是,子模块跟踪sub1的特定提交 - 提交e01ab7c,sub2的58125f7等,这可能不是“最新的”。您当然可以进入每个子项目和“git co devel”来移动分支,然后转到超级项目并修复每个子模块以指向它,但是如果你能告诉git它肯定会很方便“只需告诉我每个子模块的分支devel
的提示”。
但是git不会这样做。我们使用大量(并且有点片状)脚本来实现这些方面的某些内容。 (它还收集跨越多个子模块的提交,因为有时候更改会影响上述类型中的sub1
和sub3
。)
答案 1 :(得分:0)
你还没有澄清你的问题,所以我会给你一些答案。
如果您实际上不再关心此子目录作为单独的存储库,并且只想将其折叠到父存储库中,即您根本不需要嵌套存储库,只需复制内容<您可以简单地从已经克隆的内容中删除.git目录。
如果你确实需要一个嵌套的存储库,处理得当,那么你需要一个子模块 - 这是一个repo中的repo,用git submodule
命令管理。请查看联机帮助页或documentation online。
如果你想两种方式,你可以使用git-subtree
,它允许你将一个单独的repo合并到一个子树中,然后将它拆开以将其合并回另一个repo。它并非没有复杂性,因此在决定使用它之前一定要熟悉它的文档。