我有一个项目,在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文件的一部分,所以我不知道它从哪里得到这个路径。
什么好主意吗?
没有找到子模块路径'path/to/submodule'的url
在.gitmodules中没有找到路径'path/to/submodule'的子模块映射
当我从根目录文件夹“cd”到。/resources/css/style.css时,这些错误就开始了。
我使用git init从style.css,认识到我的错误后,我已经添加
Git添加remote origin <url>。
所以,仍然在git bash中的style.css文件中,我使用git删除远程原点。
当我检查git remote时,远程链接已被删除。
Ultimately, after doing git init for the root directory, adding it to remote, the resources/css path was providing the submodule error/fatal errors listed up top. So, from the root directory, in git bash, I typed git rm --cached resources/css, deleted the css directory (saved the code), pushed the changes, and added a css directory and styles.css file within it in a different branch (optional) to see how the outcome would be after pushing changes again and checking the deployment on github pages. It worked! I know deleting directories isn't always ideal, especially in large projects, but just wanted to share one more way to fix this issue!
ps相当新的stackoverflow,所以我为冗长的文本道歉。
# 2022的答案
场景:将子模块从目录dirA-xxx更改为另一个目录dirB-xxx
move the dirA-xxx to dirB-xxx
modify entry in .gitmodules to use dirB-xxx
modify entry in .git/config to use dirB-xxx
modify .git/modules/dirA-xxx/config to reflect the correct directory
modify dirA-xxx/.git to reflect the correct directory
run git submodule status
if return error: No submodule mapping found in .gitmodules for path dirA-xxx. This is due to dirA-xxx is not existing, yet it is still tracked by git. Update the git index by: git rm --cached dirA-xxx
Try with git submodule foreach git pull.
I didn't go through the actual study of git submodule structure, so above steps may break something. Nonetheless going through above steps, things look good at the moment. If you have any insight or proper steps to get thing done, do share it here. :)
文件夹映射可以在.git/modules文件夹中找到(每个文件夹都有参考其工作树的配置文件),因此确保这些文件夹对应于.gitmodules和.git/config中的配置。
因此.gitmodules有正确的路径:
[submodule "<path>"]
path = <path>
url = git@github.com:foo/bar.git
在[core]部分的.git/modules/<path>/config中,你有你的<path>的正确路径,例如。
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
worktree = ../../../<path>
如果在.git/modules中没有正确的文件夹,那么你必须去你的子模块目录并尝试git reset HEAD——hard或git checkout master -f。如果这没有帮助,你可能想删除所有对损坏子模块的引用,然后重新添加它,然后参见:重命名git子模块。
在.gitmodules中找不到路径“OtherLibrary/MKStore”的子模块映射
当
$ git submodule update --init
我不知道为什么会出现错误。花了一分钟,在stackoverflow中找到了答案。
$ git rm --cached OtherLibrary/MKStore
然后再次更新子模块。它工作得很好。
http://en.saturngod.net/no-submodule-mapping-found-in-gitmodules