Following rajibchowdhury's answer (upvoted), use git rm
command which is advised is for removing the special entry in the index indicating a submodule (a 'folder' with a special mode 160000
).
If that special entry path isn't referenced in the .gitmodules
(like 'Classes/Support/Three20
' in the original question), then you need to remove it, in order to avoid the "No submodule mapping found in .gitmodules
for path" error message.
You can check all the entries in the index which are referencing submodules:
git ls-files --stage | grep 160000
Previous answer (November 2010)
It is possible that you haven't declared your initial submodule correctly (i.e. without any tail '/
' at the end, as described in my old answer, even though your .gitmodules
has paths which looks OK in it).
This thread mentions:
Do you get the same error when running 'git submodule init' from a fresh clone?
If so, you have something wrong.
If you have no submodules, delete .gitmodules
, and any references to submodules in
.git/config
, and ensure the Pikimal
dir does not have a .git
dir in it.
If that fixes the problem, check in and do the same on your cruise working copy.
Obviously, don't delete your main .gitmodules
file, but look after other extra .gitmodules
files in your working tree.
Still in the topic of "incorrect submodule initialization", Jefromi mentions submodules which actually are gitlinks.
See How to track untracked content? in order to convert such a directory to a real submodule: as commented by ipatch, and details in ipatch's notes:
If you run into the below error when working git submodules
mr-fancy-42-repo already exists in the index
- Remove the submodule folder / directory
- Remove the git cache for the folder / directory
- Then reinitialize submodule
rm -Rf /path/to/mr-fancy-42-repo
git rm -R /path/to/mr-fancy-42-repo
git submodule add [mr-fancy-42-submodule-repo] /path/to/initialize/submodule/repo