首页 > 解决方案 > git submodule update 忽略 .gitmodules

问题描述

我有一个 git repo,它有一个子模块。主仓库的 .gitmodule 文件的内容是:

[submodule "wits-mercuryAPI"]
    path = wits-mercuryAPI
    url = https://github.com/myorganization/wits-mercuryAPI.git

我希望当我发出命令时......

git子模块更新

...它将正确地从 .gitmodule 文件的 url 中指定的位置克隆子模块。但是,它显然尝试使用该文件的旧版本,其中 url 指向不正确的 url,因此失败。

对于我的生活,我无法弄清楚为什么它会以这种方式运行,或者是什么神奇的隐藏属性告诉这个命令访问一些旧的和不可见的 .gitmodules 文件版本。

标签: gitgit-submodules

解决方案


好的,我想通了。虽然我没有提到这一点,因为我认为它不相关,但我在自己的问题中描述的“repo”(我们称之为“B”)本身就是另一个更高级别的父存储库的子模块(让我们称之为'A')。最后,让我们调用原始问题“C”中描述的子模块。所以依赖是A->B->C。

以下是发生的事情: 1. 我更新了 B 中的 .gitmodules 以指向 C 的新的正确 url,并将更改推送到 master。2. 我错误地认为如果我这样做了,A 会自动接受这个更改:`git clone --recurse。3. 相反,A“记住”它所指向的 B 的版本,获取带有不正确 url 的子模块版本到 C

修复在这里:https ://gist.github.com/ryannealmes/aa4eed8b222239c9e207


推荐阅读