No se encontró ninguna asignación de submódulo en .gitmodule para una ruta que no es un submódulo

Resuelto Ben Scheirman asked hace 13 años • 19 respuestas

Tengo un proyecto que tiene un submódulo enlib/three20

Mi .gitmodulearchivo se ve así:

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

He clonado esto en el pasado sin errores ( git submodule initseguido de a git submodule update) y ha estado funcionando por un tiempo.

Intenté clonar esto en una máquina nueva y ahora aparece este error git submodule init:

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

Esa ruta es sólo una carpeta vacía en Xcode que uso para albergar los proyectos del otro directorio. No es parte del .gitmodulesarchivo, por lo que no veo de dónde obtiene esta ruta.

¿Algunas ideas?

Ben Scheirman avatar Nov 15 '10 21:11 Ben Scheirman
Aceptado

No se encontró ninguna asignación de submódulo en .gitmodules para la ruta 'OtherLibrary/MKStore' cuando

$ git submodule update --init

No sabía por qué ocurrió el error. Después de pasar un minuto y encontré la respuesta en stackoverflow.

$ git rm --cached OtherLibrary/MKStore

y luego actualice el submódulo nuevamente. Está funcionando bien.

http://en.saturngod.net/no-submodule-mapping-found-in-gitmodules

rajibchowdhury avatar Nov 15 '2012 09:11 rajibchowdhury

Siguiendo la respuesta de rajibchowdhury (votada a favor), use el comando que se recomienda para eliminar la entrada especial en el índice que indica un submódulo (una 'carpeta' con un modo especial ).git rm160000

Si no se hace referencia a esa ruta.gitmodules de entrada especial (como ' Classes/Support/Three20' en la pregunta original), entonces debe eliminarla para evitar el mensaje de error " No se encontró ninguna asignación de submódulo en .gitmodulesla ruta ".

Puede consultar todas las entradas en el índice que hacen referencia a submódulos:

git ls-files --stage | grep 160000

Respuesta anterior (noviembre de 2010)

Es posible que no haya declarado correctamente su submódulo inicial (es decir, sin ninguna cola ' /' al final, como se describe en mi respuesta anterior , aunque tenga .gitmodulesrutas que se vean bien en él).

Este hilo menciona:

¿Recibe el mismo error al ejecutar 'git submodule init' desde un clon nuevo?
Si es así, algo anda mal.

Si no tiene submódulos, elimine .gitmodulesy cualquier referencia a submódulos en .git/configy asegúrese de que el Pikimaldirectorio no contenga ningún .gitdirectorio.
Si eso soluciona el problema, regístrese y haga lo mismo en su copia de trabajo del crucero.

Obviamente, no elimine su .gitmodulesarchivo principal, pero cuide otros .gitmodulesarchivos adicionales en su árbol de trabajo.


Aún en el tema de "inicialización incorrecta de submódulos", Jefromi menciona submódulos que en realidad son gitlinks .

Consulte ¿Cómo rastrear contenido sin seguimiento? para convertir dicho directorio en un submódulo real: como lo comenta ipatch y detalles en las notas de ipatch :

Si se encuentra con el siguiente error al trabajar con submódulos de git

mr-fancy-42-repo already exists in the index
  1. Eliminar la carpeta/directorio del submódulo
  2. Eliminar el caché de git para la carpeta/directorio
  3. Luego reinicialice el submódulo
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
VonC avatar Nov 15 '2010 14:11 VonC

Cuando uso SourceTree para hacer las cosas, arrojará este mensaje.
El mensaje que encontré:

git -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree submodule update --init --recursive
No submodule mapping found in .gitmodules for path 'SampleProject/SampleProject'
Completed with errors, see above

Mi escenario es que apliqué mal el directorio del proyecto que contiene la carpeta .git .
SourceTree consideró esta carpeta como un submódulo git, pero en realidad no.

Mi solución es usar la línea de comando para eliminarlo.

$ git rm -r SampleProject --cached
$ git commit -m "clean up folders"

Retire la basura en git y manténgala limpia.

Johnny avatar Nov 19 '2014 10:11 Johnny

Resolví este problema por mí. Inicialmente intenté hacer esto:

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

Resulta que la especificación de la opción --branch no debe usarse si desea clonar la rama maestra . Lanza este error:

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

Cada vez que intentas hacer un

git submodule sync

Se arrojará este error:

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

Y las líneas necesarias en .gitmodules nunca se agregan.

Entonces la solución para mí fue esta:

git submodule add [URL] [PATH_TO_SUBMODULE]
luksak avatar Feb 22 '2012 09:02 luksak