git子模块从错误的远程服务器更新

git子模块从错误的远程服务器更新,git,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 = ../blend

我克隆了具有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从特定提交创建了分支

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

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

Q:我仍然无法从原始回购协议中克隆出scons。它还在试图从github克隆,为什么?其他子模块按预期工作。 我不确定是否可能,因为我第一次尝试从我创建的新分支而不是从主分支运行
git子模块
命令。

我甚至从master上尝试过,但仍然有相同的行为(连接到github)。

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

你能澄清一下你的意思吗

其他子模块按预期工作

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


我的建议是,更新.gitmodules文件以使用指向原始repo位置的完整URL。这将解决从另一个URL获取的所有问题。

为什么不提供存储库的完整路径?即
protocol://host:port/project/submodule
而不是模棱两可的
。/子模块