因为这是我第一次使用Git子模块,所以我在网上关注了一些(相当脱节的)教程。
git submodule
总是吐出一长串不相关的路径(可能是PATH
env?),但没有明显的原因,但是有一个更糟糕的问题:
Xkeeper@RECYCLEBIN4400 /F/_secret/Kushura (master)
$ git submodule sync
No submodule mapping found in .gitmodules for path 'D:\Programs\Git/libexec/git-core;D:\Programs\Git\libexec\git-core; <long list of directories omitted...>'
Synchronizing submodule url for ''
Synchronizing submodule url for 'hump'
$
我无法弄清楚为什么它没有报告名称,因为.gitmodules
都正确地命名了它:
$ cat .gitmodules
[submodule "HardonCollider"]
path = HardonCollider
url = git://github.com/vrld/HardonCollider
[submodule "hump"]
path = hump
url = git://github.com/vrld/hump
与此同时,.git/config
有一个幻影子模块不会消失,并且在我尝试git submodule sync
时(甚至在删除它之后)重新出现:
[submodule "HardonCollider"]
url = git://github.com/vrld/HardonCollider
[submodule "hump"]
url = git://github.com/vrld/hump
[submodule ""]
url =
发生的一个问题是HardonCollider
模块没有在GitHub上正确链接,而hump
模块正在链接到正确的repo和commit。我也无法弄清楚为什么会发生这种情况。
除了回购再利用并再次尝试之外,我不知道下一步该尝试什么。
答案 0 :(得分:0)
在尝试完成任何事情后摸索着,除了完全重新制作回购并再次尝试之外,什么都没有用。
最后我不得不从头开始重新启动我的repo并重新添加子模块,现在它可以正常工作。
我仍然拥有回购的原始副本,所以如果你能提出更好的答案,我会接受。
答案 1 :(得分:0)
子模块函数是脚本化的,而不是用C编码。它们位于(相同的)git-submodule
和git-submodule.sh
文件中。代码包括许多交叉检查,它们是他们认为的东西,如果它不喜欢它就退出。
您可以从代码中获得一些灵感,并将其与失败的回购内容进行比较。我没有深入到代码检查的底部(我出于其他原因阅读它)
在Msysgit中,来源位于C:\msysgit178\git\git-submodule
(这是我的V1.7.8副本)
答案 2 :(得分:0)
这让我咬了两次,而且我已经能够修复一次了。我采取的步骤:
clone
或submodule update --init
以来我添加或更新的所有子模块最终我发现了一个子文件,其中包含工作目录的文件,在.git文件夹中被引用,但不在.gitsubmodules文件中。我把它移到了各地,事情又恢复了正常。
额外注意:我使用的是msysgit并获取了大量的路径列表,但是当我克隆到我的远程测试服务器(共享主机上的Linux机箱)时,它提供了更多有用的错误。记不清楚,但它就像no submodule mapping found in [the exact name of the submodule I was looking for]
。