在 .gitmodules 中未找到子模块映射路径

33

当我运行时

git submodule update
No submodule mapping found in .gitmodules for path 'Classes/lib/AFKissXMLRequestOperation'

但是我当前的仓库中没有子模块Classes/lib/AFKissXMLRequestOperation

我的git配置是:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = false
[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = git@github.com:why_ios.git
[branch "master"]
    remote = origin
    merge = refs/heads/master
[submodule "External/ios-SDNestedTable"]
    url = git@github.com:why/ios-SDNestedTable.git
[submodule "External/PSStackedView"]
    url = git@github.com:why/PSStackedView.git

而 .gitmodules 文件是:

[submodule "External/ios-SDNestedTable"]
    path = External/ios-SDNestedTable
    url = git@github.com:why/ios-SDNestedTable.git
[submodule "External/PSStackedView"]
    path = External/PSStackedView
    url = git@github.com:why/PSStackedView.git

https://dev59.com/vG855IYBdhLWcg3wuGwM - Ciro Santilli OurBigBook.com
2个回答

103

检查你的.git/modules的设置是否正确。由于几个版本之前,Git 在那里添加了一个条目。

此外,该树可能在该路径上有一个提交对象。要摆脱它,你可以

git rm --cached Classes/lib/AFKissXMLRequestOperation

那应该彻底摆脱它。


9
您,先生,救了我于疯狂的边缘! - Havard Graff
我执行了 git rm --cached myFile,但现在无法在执行该操作的服务器上进行 git init。我有一个由4台机器组成的集群,只有这一台机器没有反应。如何重建此缓存? - Nicolas D
好的,这个问题有点傻,git reset HEAD myFile,我又可以了,很抱歉打扰了! - Nicolas D
5
如果你来自未来,那么请UPvote此条评论,因为Git的作者们终于实现了git submodule update --init --recursive --justworkdammit - Warren P
由于某些原因,我的代码需要在路径周围加上单引号,否则无法正常工作。git rm --cached 'Classes/lib/AFKissXMLRequestOperation' - Jason Glisson
最后的“也”步骤在我既没有.gitmodules也没有.git/modules的情况下起作用了 - 谢谢! - undefined

3
留一个提示给那些在 Windows 上使用 git 的人。虽然在线上有各种解决方案,但由于 git 对路径分隔符的处理方式,有可能即使按照这些答案操作仍无法解决问题。例如,我的问题是通过子模块添加 hugo 主题:
git submodule add https://github.com/danielkvist/hugo-terrassa-theme.git themes\terrassa
它会生成一个 .gitmodules 文件:
[submodule "themes\\terrassa"]
    path = themes\\terrassa
    url = https://github.com/danielkvist/hugo-terrassa-theme.git

这将会对 git submodule [status || init || ...] 造成问题。

需要手动更改分隔符为:

[submodule "themes/terrassa"]
    path = themes/terrassa
    url = https://github.com/danielkvist/hugo-terrassa-theme.git

...对我解决了这个问题。

同时还解决了在Netlify上部署的问题,因为他们使用*nix服务器镜像。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接