我有一个项目,在lib/three20有一个子模块

我的.gitmodule文件是这样的:

[submodule "lib/three20"]
    path = lib/three20
    url = git://github.com/facebook/three20.git

我克隆了这个在过去没有错误,(git子模块init紧随git子模块更新),它已经工作了一段时间。

我试图克隆这个到一个新的机器,现在我在git子模块init上得到这个错误:

No submodule mapping found in .gitmodules for path 'Classes/Support/Three20'

这个路径只是Xcode中的一个空文件夹,我用它来存放来自另一个目录的项目。它不是.gitmodules文件的一部分,所以我不知道它从哪里得到这个路径。

什么好主意吗?


当前回答

在.gitmodules文件中,我替换了字符串

"path = thirdsrc\boost" 

"path = thirdsrc/boost", 

问题解决了!- -

其他回答

我解决了删除回购和运行这个命令

git clone --recurse-submodules https://github.com/chaconinc/MainProject

在那之后,它对我来说工作得很好,因为这里没有一个选项是有用的

它的作用是:

克隆主回购 在克隆完成后立即初始化子模块

就是这样

你可以在下面这个链接找到更多信息

在.gitmodules文件中,我替换了字符串

"path = thirdsrc\boost" 

"path = thirdsrc/boost", 

问题解决了!- -

对我们来说,问题是重复的子模块条目被添加到.gitmodules中(可能来自merge)。我们在.gitmodules中搜索git抱怨的路径,发现两个相同的部分。删除其中一个部分为我们解决了问题。

值得注意的是,git 1.7.1给出了“没有子模块映射”的错误,但git 2.13.0似乎并不在意。

在查看了我的.gitmodules之后,我发现我确实在不应该出现的地方出现了一个大写字母。所以请记住,.gitmodules目录是区分大小写的

我为自己解决了这个问题。一开始我是这么做的:

git submodule add --branch master [URL] [PATH_TO_SUBMODULE]

事实证明,如果你想克隆主分支,不应该使用——branch选项的规范。它抛出以下错误:

fatal: Cannot force update the current branch.
Unable to checkout submodule '[PATH_TO_SUBMODULE]'

每次你试着做

git submodule sync

这个错误将被抛出:

No submodule mapping found in .gitmodules for path '[PATH_TO_SUBMODULE]'

在.gitmodules中需要的行永远不会被添加。

所以我的解决方案是:

git submodule add [URL] [PATH_TO_SUBMODULE]