git submodule从错误的远程

时间:2015-09-16 10:07:28

标签: git

我克隆了有4个子模块的Blender repo

[submodule "release/scripts/addons"]
    path = release/scripts/addons
    url = ../blender-addons.git
    ignore = all
[submodule "release/scripts/addons_contrib"]
    path = release/scripts/addons_contrib
    url = ../blender-addons-contrib.git
    ignore = all
[submodule "release/datafiles/locale"]
    path = release/datafiles/locale
    url = ../blender-translations.git
    ignore = all
[submodule "scons"]
    path = scons
    url = ../scons.git
    ignore = all

然后我通过git checkout -b branchname <commit>从特定提交创建了分支。

然后我添加了新的github remote并将该分支推送到该github repo。

然后我注意到我甚至需要克隆一个子模块(用于构建的scons),所以我使用git submodule update --init scons,但是它试图连接到github,这显然是错误的,因为它必须从原始远程克隆。

:我仍然无法从原始回购中克隆 scons 。它仍然试图从github克隆,为什么?其他子模块按预期工作。 我不确定是不是因为我试图从我创建的新分支中首次运行git submodule命令,而不是从主分区运行。
我甚至尝试过master但仍然有相同的行为(连接到github)。

1 个答案:

答案 0 :(得分:0)

如果您的示例.gitmodules文件是逐字复制的,特别是如果网址是“相对”的话。 URL(即它们以./../开头)然后会导致git submodule update命令尝试从与超级项目相同的基本URL中提取子模块,在本例中为GitHub(有关子模块的详细信息,请参阅http://git-scm.com/docs/git-submodule

你能否澄清一下你的意思

  

其他子模块按预期工作。

因为它们似乎也有相对的URL,因此我希望它们以同样的方式失败。

我建议,更新.gitmodules文件以使用指向原始仓库位置的完整URL。这应该解决从其他URL获取的任何问题。