【问题标题】:Git repository within Git repository [duplicate]Git存储库中的Git存储库[重复]
【发布时间】:2011-05-28 20:52:43
【问题描述】:

我有一个主 git 存储库 A,我们在主项目的子目录中使用另一个 git 存储库 B 的源代码。 现在最好在这个使用的子目录中的 A 存储库中签出 B 存储库。 如果其他人随后克隆了存储库,他当然应该获得我们的主存储库 A,并在其中自动获取 B 存储库。

让我可视化目录结构:

+ main_repository - 主存储库的根目录 + src - 包含源代码的目录 + foreignRepo - 这应该是另一个 git repo 的根目录 + 二进制文件 + 其他

这必须在远程存储库中也知道,只是本地副本对我没有帮助,因为其他人检查了这个并且必须能够编译所有东西。

【问题讨论】:

标签: git directory repository clone subdirectory


【解决方案1】:

在 git 版本 1.7.11 及更高版本中使用 git subtreegit subtree is superior to git submodule 因为:

  • 简单工作流的管理很容易。旧版本的 git 是 支持(甚至在 v1.5.2 之前)
  • 超级项目的克隆完成后,子项目的代码就可以使用了
  • git subtree 不需要您的存储库的用户学习任何新内容,他们可以忽略您使用子树来管理依赖项这一事实
  • git subtree 不会像 git submodule 那样添加新的元数据文件(例如 .gitmodule)
  • 可以修改子树的内容,而无需在其他地方拥有依赖项的单独存储库副本

另外,如果您需要detach a subtree of your existing repository into a new repositorygit subtree split 可以帮助您。

2020 年 2 月更新:现在我更喜欢 subrepo

【讨论】:

    【解决方案2】:

    你会想了解Git submodules

    【讨论】:

      【解决方案3】:

      您可以在不使用子模块的情况下嵌套两个 git repo。假设 ChildRepo 是 ParentRepo 的子目录,两者都是 git 仓库。

      + ParentRepo
        - ChildRepo
      

      如果您将文件添加到 ChildRepo,ParentRepo 将忽略它。当您提交它时,它将被添加到 ChildRepo。无法将 ChildRepo 中的文件添加到 ParentRepo。

      更多信息:Nested GIT repo gotchas!

      【讨论】:

      • 我刚刚尝试在父 repo 中嵌套一个子 repo。当我将文件添加到子仓库时,我做了 cd ../git status 并且父仓库 not 忽略了新文件。
      • 您需要将ChildRepo 放入.gitignore 吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-13
      • 2013-02-23
      • 1970-01-01
      • 1970-01-01
      • 2014-03-15
      • 2011-08-02
      • 2016-08-15
      相关资源
      最近更新 更多