submodule - No se ha encontrado ningún mapeo de submódulos en.gitmodule para una ruta que no sea un submódulo
guardar credenciales git (14)
Acabo de golpear este error después de intentar "git submodule init" en una nueva comprobación de mi repositorio. Resulta que había especificado la subcarpeta de módulo con el caso incorrecto inicialmente. Ya que estoy en una Mac con un sistema de archivos que distingue entre mayúsculas y minúsculas (hurr) estaba fallando. Por ejemplo:
git submodule add [email protected]:user/project.git MyApp/Resources/Project
Cloning into ''MyApp/Resources/Project''
tiene éxito pero el problema es que en el disco la ruta es
Myapp/Resources/Project
Lo que no entiendo es por qué git está iniciando el módulo en la carpeta incorrecta (ignorando el caso incorrecto en mi comando) pero luego operando correctamente (fallando) con los comandos subsiguientes.
Tengo un proyecto que tiene un submódulo en lib/three20
Mi archivo .gitmodule
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 init
seguido de una git submodule update
) y ha estado funcionando por un tiempo.
Intenté clonar esto en una nueva máquina, y ahora obtengo este error en git submodule init
:
No submodule mapping found in .gitmodules for path ''Classes/Support/Three20''
Esa ruta es solo una carpeta vacía en Xcode que utilizo para alojar los proyectos del otro directorio. No es parte del archivo .gitmodules
, así que no veo de dónde .gitmodules
esta ruta.
¿Algunas ideas?
Acabo de tener este problema. Por un tiempo probé el consejo de eliminar la ruta, git eliminar la ruta, eliminar .gitmodules, eliminar la entrada de .git / config, agregar el submódulo de nuevo, luego confirmar y presionar el cambio. Fue desconcertante porque no parecía haber ningún cambio cuando hice "git commit -a", así que intenté empujar solo la eliminación, luego presioné la lectura para que pareciera un cambio.
Después de un tiempo noté por accidente que después de eliminar todo, si ejecutaba "git submodule update --init", tenía un mensaje sobre un nombre específico al que git ya no debía hacer referencia a: el nombre del repositorio el submódulo estaba enlazando a, no el nombre de la ruta a la que lo estaba comprobando. Grepping reveló que esta referencia estaba en .git / index. Así que ejecuté "git rm --cached repo-name" y luego leí el módulo. Cuando me comprometí esta vez, el mensaje de confirmación incluía un cambio de que estaba eliminando este objeto inesperado. Después de eso, funciona bien.
No estoy seguro de lo que sucedió, supongo que alguien abusó del comando de submódulo de git, tal vez invirtiendo los argumentos. Podría haber sido yo incluso ... Espero que esto ayude a alguien!
Cuando utilizo SourceTree para hacer las cosas, escupirá 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 de git, pero en realidad no.
Mi solución es usar la línea de comandos para eliminarlo.
$ git rm -r SampleProject --cached
$ git commit -m "clean up folders"
Retire la basura en git y manténgala limpia.
Después de la answer rajibchowdhury (upvoted), use el comando git rm
que se recomienda para eliminar la entrada especial en el índice que indica un submódulo (una ''carpeta'' con un modo especial 160000
).
Si esa ruta de entrada especial no se menciona en el .gitmodule
(como '' Classes/Support/Three20
'' en la pregunta original), entonces debe eliminarlo, para evitar el " No hay mapeo de submódulo encontrado en .gitmodules
para la ruta " mensaje de error.
Puede verificar todas las entradas en el índice que hacen referencia a los submódulos:
git ls-files --stage | grep 160000
Respuesta anterior (noviembre 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 su .gitmodule
tiene caminos que se ven bien en él).
Este hilo menciona:
¿Obtiene el mismo error al ejecutar ''git submodule init'' desde un clon nuevo?
Si es así, tienes algo mal.Si no tiene submódulos, elimine
.gitmodules
y cualquier referencia a los submódulos en .git / config, y asegúrese de que el directorio Pikimal no tenga un directorio.git
.
Si eso soluciona el problema, regístrese y haga lo mismo en su copia de trabajo de crucero.
Obviamente, no borre su archivo principal .gitmodules
, sino busque otros archivos extra .gitmodules
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 realizar un seguimiento del contenido sin seguimiento? con el fin de convertir dicho directorio en un submódulo real.
Después de mirar mis .gitmodules
, resultó que tenía una letra mayúscula donde no debería haberlo hecho. Así que .gitmodules
en cuenta que los directorios .gitmodules
distinguen entre mayúsculas y minúsculas
El problema para nosotros fue que se habían agregado entradas de submódulos duplicados en .gitmodules (probablemente de una combinación). Buscamos el camino del que git se quejó en .gitmodules y encontramos las dos secciones idénticas. Eliminar una de las secciones solucionó el problema para nosotros.
Por lo que vale la pena, git 1.7.1 dio el error "no hay mapas de submódulos", pero a git 2.13.0 no pareció importarle.
En mi caso, el error probablemente se debió a una combinación incorrecta entre .gitmodules en dos ramas con diferentes configuraciones de submódulos. Después de recibir sugerencias de este foro, resolví el problema editando manualmente el archivo .gitmodules, y agregar la entrada faltante del submódulo es bastante fácil. Después de eso, el comando git submodule update --init --recursive funcionó sin problemas.
Escenario: cambiar el submódulo del directorio dirA-xxx a otro directorio dirB-xxx
- mueve el dirA-xxx a dirB-xxx
- modificar la entrada en .gitmodules para usar dirB-xxx
- modifique la entrada en .git / config para usar dirB-xxx
- modifique .git / modules / dirA-xxx / config para reflejar el directorio correcto
- modifique dirA-xxx / .git para reflejar el directorio correcto
ejecutar
git submodule status
si se produce un error de retorno: no se encontró asignación de submódulo en .gitmodules para la ruta dirA-xxx. Esto se debe a que dirA-xxx no existe, sin embargo, git todavía lo rastrea. Actualizar el índice git por:
git rm --cached dirA-xxx
Pruebe con
git submodule foreach git pull
. No revisé el estudio real de la estructura del submódulo de git, por lo que los pasos anteriores pueden romper algo. No obstante, siguiendo los pasos anteriores, las cosas se ven bien en este momento. Si tiene alguna idea o pasos apropiados para hacer las cosas, compártalas aquí. :)
Generalmente, git crea un directorio oculto en el directorio raíz del proyecto (.git /)
Cuando está trabajando en un CMS, es posible que instale módulos / complementos que llevan el directorio .git / con los metadatos de git para el módulo / complemento específico.
La solución más rápida es encontrar todos los directorios .git y mantener solo su directorio de metadatos de git raíz. Si lo hace, git no considerará esos módulos como submódulos de proyecto.
La asignación de carpetas se puede encontrar en la carpeta .git/modules
(cada una tiene un archivo de config
con referencia a su worktree
), así que asegúrese de que estas carpetas correspondan a la configuración en .gitmodules
y .git/config
.
Entonces .gitmodules
tiene la ruta correcta:
[submodule "<path>"]
path = <path>
url = [email protected]:foo/bar.git
y en .git/modules/<path>/config
en la sección [core]
la ruta correcta a su <path>
, por ejemplo
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
worktree = ../../../<path>
Si falta la carpeta correcta en .git/modules
, debe ir a su directorio de submódulos e intentar git reset HEAD --hard
o git checkout master -f
. Si esto no ayuda, probablemente querrá eliminar todas las referencias al submódulo roto y agregarlo nuevamente, luego vea: Renombrar un submódulo git .
No se ha encontrado una asignación de submódulos en .gitmodules para la ruta ''OtherLibrary / MKStore'' cuando
$ git submodule update --init
No sabía por qué se produce el error. Después de pasar un minuto encontré la respuesta en .
$ git rm --cached OtherLibrary/MKStore
y luego actualizar el submódulo de nuevo. Está funcionando bien.
http://en.saturngod.net/no-submodule-mapping-found-in-gitmodules
Resolví este problema para mí. Inicialmente traté de hacer esto:
git submodule add --branch master [URL] [PATH_TO_SUBMODULE]
Como resulta que la especificación de la opción --branch no debe utilizarse 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
Este error será lanzado:
No submodule mapping found in .gitmodules for path ''[PATH_TO_SUBMODULE]''
Y las líneas necesarias en .gitmodules nunca se agregan.
Así que la solución para mí fue esta:
git submodule add [URL] [PATH_TO_SUBMODULE]
Sólo git rm subdir
estará bien. Eso eliminará el subdir como un índice.
en el archivo .gitmodules , reemplacé la cadena
"path = thirdsrc/boost"
con
"path = thirdsrc/boost",
y se solucionó! - -