Git子模块没有名称和其他问题

时间:2011-12-31 08:34:46

标签: git git-submodules

因为这是我第一次使用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。我也无法弄清楚为什么会发生这种情况。

除了回购再利用并再次尝试之外,我不知道下一步该尝试什么。

3 个答案:

答案 0 :(得分:0)

在尝试完成任何事情后摸索着,除了完全重新制作回购并再次尝试之外,什么都没有用。

  • 编辑.git / config删除网址:无效。
  • 编辑.gitmodules:无效。
  • 编辑模块 / .git / config:无效。
  • 立即执行以上所有操作:无效。
  • 尝试重新添加子模块:不起作用。

最后我不得不从头开始重新启动我的repo并重新添加子模块,现在它可以正常工作。

我仍然拥有回购的原始副本,所以如果你能提出更好的答案,我会接受。

答案 1 :(得分:0)

子模块函数是脚本化的,而不是用C编码。它们位于(相同的)git-submodulegit-submodule.sh文件中。代码包括许多交叉检查,它们是他们认为的东西,如果它不喜欢它就退出。

您可以从代码中获得一些灵感,并将其与失败的回购内容进行比较。我没有深入到代码检查的底部(我出于其他原因阅读它)

在Msysgit中,来源位于C:\msysgit178\git\git-submodule(这是我的V1.7.8副本)

On Github here

答案 2 :(得分:0)

这让我咬了两次,而且我已经能够修复一次了。我采取的步骤:

  1. 列出了自上次clonesubmodule update --init以来我添加或更新的所有子模块
  2. 使用此处的三步法一次删除一个:http://chrisjean.com/2009/04/20/git-submodules-adding-using-removing-and-updating/
  3. 每次删除后,提交,然后
  4. 克隆项目并查看错误是否仍然存在。
  5. 最终我发现了一个子文件,其中包含工作目录的文件,在.git文件夹中被引用,但不在.gitsubmodules文件中。我把它移到了各地,事情又恢复了正常。

    额外注意:我使用的是msysgit并获取了大量的路径列表,但是当我克隆到我的远程测试服务器(共享主机上的Linux机箱)时,它提供了更多有用的错误。记不清楚,但它就像no submodule mapping found in [the exact name of the submodule I was looking for]