Git存储库中的Git存储库

MP0*_*MP0 29 git

我有一个包含Git存储库的Git存储库.

repo1/
     .git/
     files
     repo2/
          .git/
          files
     files
Run Code Online (Sandbox Code Playgroud)

是否可以使用这种架构?

Von*_*onC 20

你可以有嵌套的git repos:
父repo将简单忽略嵌套的repo.

jleedev意见,并说明了这个要点脚本父回购将通过跟踪嵌套回购州一个gitlink.
(gitlink =对象的SHA-1引用另一个存储库中的提交
.Git 链接只能由SHA或通过提交标记指定.gitlink有一个特殊模式' 160000',用于子模块,但也用于简单嵌套回购).

但是,通常的命令不会确认嵌套的repo:add或者commit只应用于一个repo而不是另一个repo.

git子模块允许引用来自父repo的嵌套repo,并保留子repo的精确引用.

另一种选择可能涉及:

  • 两个单独的Git回购(不嵌套)
  • 符号链接从一个到另一个的特定部分(Unix,但Windows Vista +都有符号链接)

  • 最值得注意的是,gitlink是树/索引条目,而子模块是可以克隆和同步gitlinks的UI.文档并没有真正解释这一点. (4认同)
  • 如果你执行`git add .`或`git add inner-repo`,结果就是一个git链接,如下所述.但是,如果你执行`git add inner-repo /`(尾随斜杠),那么它会在repo中添加文件,并开始跟踪它们,就像任何其他文件一样(除了`inner-repo/.git`,它忽略了).结果是两个repos分别跟踪文件,他们彼此不了解. (3认同)
  • 父回购不会忽略它; 它将使用gitlink跟踪HEAD. (2认同)
  • 不幸的是稀疏; 大多数文档都谈论子模块而不是gitlinks.grep for`160000`或`Documentation /`中的`gitlink`.这是gitlinks行为的[例子](https://gist.github.com/969191). (2认同)
  • @jleedev:非常好.我在你的回答中整合了你的评论,添加了链接到`git fast-import`手册页,这是Git中唯一一个明确提到`gitlink`是什么的文档. (2认同)

Art*_*mak 8

你正试图完成一个叫做"子模块"的事情.

请查看Git Tools - Submodules以了解它是如何工作的.