【问题标题】:How does git handle cloning another repository into a subdirectory?git 如何处理将另一个存储库克隆到子目录中?
【发布时间】:2011-03-07 14:58:30
【问题描述】:

我刚刚将一个存储库克隆到另一个存储库的子目录中,而 git 实际上似乎非常聪明地处理了这种情况。我知道子模块,但我认为它们总是必须明确定义,我不认为 git 有这个功能。发生了什么?

这是我的 shell 会话:

https://gist.github.com/858131

【问题讨论】:

    标签: git git-submodules subdirectory


    【解决方案1】:

    它将其作为嵌套存储库处理,而不是作为子模块。
    如您所见,将其声明为子模块:

    • 子目录不应该已经存在,这意味着如果您已经克隆了第二个 repo,则需要先将其删除,然后再将其添加为子模块。
    • 或者您可以尝试将其直接添加到.gitmodules 文件中(未测试)

    这将允许创建special entry in the git index referencing the submodule SHA1,如shown here,并在SO问题“Nested git repositories without submodules?”中详细说明。

    【讨论】:

      【解决方案2】:

      第二个存储库被第一个存储库作为子模块处理。由于您尚未将其定义为子模块,因此您无法使用git submodule 命令与它进行交互,但所有其他命令都将其视为子模块。

      【讨论】:

      • 好的...既然我的存储库已进入此状态,我如何告诉git submodule 将第二个存储库视为子模块?
      • @jnylen: git submodule add git://github.com/tpope/vim-abolish.git bundle/vim-abolish
      • 那(只是正常添加子模块)只有在我吹走已经存在的东西之后才起作用。不过很好,谢谢。
      • @jnylen:我认为您也可以手动将其添加到 .gitmodules
      猜你喜欢
      • 2012-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-12
      • 2022-12-20
      • 2016-04-18
      相关资源
      最近更新 更多