Tengo un proyecto que tiene un submódulo en lib/three20
Mi .gitmodule
archivo 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 init
seguido de a git submodule update
) y ha estado funcionando durante un tiempo.
Intenté clonar esto en una nueva máquina, y ahora recibo este error 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 uso para alojar los proyectos del otro directorio. No es parte del .gitmodules
archivo, así que no veo de dónde está obteniendo esta ruta.
¿Algunas ideas?
git
git-submodules
Ben Scheirman
fuente
fuente
.git
carpeta. Hacer un agrep -r "Classes/Support/Three20" *.*
tampoco produce ningún resultadogit ls-tree HEAD Classes/Support
, y si dice que Three20 es un commit, hay un gitlink allí. Si es así, siga las instrucciones apropiadas de la pregunta VonC vinculada anteriormente para convertirlo en un submódulo adecuado o convertirlo en contenido seguido regularmente.Respuestas:
Siguiendo rajibchowdhury 's respuesta (upvoted), el uso
git rm
de comandos que se aconseja es para quitar la entrada especial en el índice indica un submódulo (una 'carpeta' con un modo especial160000
).Si esa ruta de entrada especial no está referenciada en
.gitmodule
(como 'Classes/Support/Three20
' en la pregunta original), entonces debe eliminarla para evitar el mensaje de error " No se encontró asignación de submódulo en la.gitmodules
ruta ".Puede verificar todas las entradas en el índice que hacen referencia a submódulos:
Respuesta anterior (noviembre de 2010)
Es posible que no haya declarado su submódulo inicial correctamente (es decir, sin ninguna cola '/' al final, como se describe en mi respuesta anterior , a pesar de que
.gitmodule
tiene rutas que se ven bien en él).Este hilo menciona:
Obviamente, no elimine su
.gitmodules
archivo principal , sino cuide otros.gitmodules
archivos 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 no rastreado? para convertir dicho directorio en un submódulo real.
fuente
git rm xxx
(sin barra inclinada) legit rm --cached
permite mantenerlo en el disco mientras lo elimina del índice..gitmodule
referencia a esas entradas, entonces stackoverflow.com/a/16162000/6309 . Si no, un simplegit rm afolder
(sin seguimiento / barra)No se encontró asignación de submódulo en .gitmodules para la ruta 'OtherLibrary / MKStore' cuando
No sabía por qué ocurre el error. Después de pasar un minuto y encontrar la respuesta en stackoverflow.
y luego actualice el submódulo nuevamente. Funciona bien
http://en.saturngod.net/no-submodule-mapping-found-in-gitmodules
fuente
git submodule sync | grep "mapping found"
unagit rm
y otra vezgit submodule sync
. Problema desaparecido!Cuando uso SourceTree para hacer las cosas, escupirá este mensaje.
El mensaje que encontré:
Mi escenario es que apliqué mal el directorio del proyecto que contiene la carpeta .git .
SourceTree considera esta carpeta como submódulo git, pero en realidad no.
Mi solución es usar la línea de comando para eliminarlo.
retire la basura en git y manténgala limpia.
fuente
Resolví este problema por mí. Inicialmente intenté hacer esto:
Resulta que la especificación de la opción --branch no debe usarse si desea clonar la rama maestra . Lanza este error:
Cada vez que intentas hacer un
Este error será arrojado:
Y las líneas necesarias en .gitmodules nunca se agregan.
Entonces la solución para mí fue esta:
fuente
Acabo de recibir este error después de intentar "git submodule init" en un nuevo pago de mi repositorio. Resulta que inicialmente había especificado la subcarpeta del módulo con el caso incorrecto. Como estoy en una Mac con un sistema de archivos sensible a mayúsculas y minúsculas (hurr), estaba fallando. Por ejemplo:
tiene éxito pero el problema es que en el disco la ruta es
Lo que no entiendo es por qué git está iniciando el módulo en una carpeta incorrecta (ignorando el caso incorrecto en mi comando) pero luego funcionando correctamente (al fallar) con los comandos posteriores.
fuente
Solo
git rm subdir
estará bien. eso eliminará el subdirectorio como índice.fuente
Acabo de tener este problema. Durante un tiempo probé los consejos sobre cómo eliminar la ruta, git eliminar la ruta, eliminar .gitmodules, eliminar la entrada de .git / config, agregar el submódulo de nuevo, luego confirmar y empujar el cambio. Fue desconcertante porque no parecía haber ningún cambio cuando hice "git commit -a", así que intenté presionar solo la eliminación, luego presioné la readmisión 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 debería haber tenido ninguna referencia: el nombre del repositorio del submódulo estaba vinculando, no el nombre de la ruta a la que lo estaba buscando. Grepping reveló que esta referencia estaba en .git / index. Entonces 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 hizo un mal uso del comando git submodule, tal vez invirtiendo los argumentos. Podría haber sido yo incluso ... ¡Espero que esto ayude a alguien!
fuente
en el archivo .gitmodules , reemplacé la cadena
con
y se solucionó! - -
fuente
La asignación de carpetas se puede encontrar en la
.git/modules
carpeta (cada una tiene unconfig
archivo con referencia a la suyaworktree
), así que asegúrese de que estas carpetas se correspondan con la configuración en.gitmodules
y.git/config
.Entonces
.gitmodules
tiene la ruta correcta:y
.git/modules/<path>/config
en[core]
la sección tienes el camino correcto para su<path>
, por ejemplo,Si
.git/modules
falta la carpeta correcta , debe ir al directorio de submódulos e intentargit reset HEAD --hard
ogit checkout master -f
. Si esto no ayuda, probablemente desee eliminar todas las referencias al submódulo roto y agregarlo nuevamente, luego vea: Cambiar el nombre de un submódulo git .fuente
Escenario: cambiar el submódulo del directorio dirA-xxx a otro directorio dirB-xxx
correr
git submodule status
si devuelve el error: no se encontró asignación de submódulo en .gitmodules para la ruta dirA-xxx. Esto se debe a que dirA-xxx no existe, pero git todavía lo sigue. Actualice el índice git por:
git rm --cached dirA-xxx
Tratar con
git submodule foreach git pull
. No revisé el estudio real de la estructura del submódulo git, por lo que los pasos anteriores pueden romper algo. Sin embargo, siguiendo los pasos anteriores, las cosas se ven bien en este momento. Si tiene alguna idea o pasos adecuados para hacer algo, compártelo aquí. :)fuente
Por lo general, git crea un directorio oculto en el directorio raíz del proyecto (.git /)
Cuando trabajas en un CMS, es posible que instales módulos / complementos que lleven 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 el directorio raíz de metadatos de git. Si lo hace, git no considerará esos módulos como submódulos del proyecto.
fuente
Después de mirar mi
.gitmodules
, resultó que tenía una letra mayúscula donde no debería tenerla. Tenga en cuenta que los.gitmodules
directorios distinguen entre mayúsculas y minúsculasfuente
.gitmodules
lugar?En mi caso, el error probablemente se debió a una fusión incorrecta entre .gitmodules en dos ramas con diferentes configuraciones de submódulos. Después de tomar sugerencias de este foro, resolví el problema editando manualmente el archivo .gitmodules, y agregar la entrada de submódulo faltante es bastante fácil. Después de eso, el comando git submodule update --init --recursive funcionó sin problemas.
fuente
El problema para nosotros fue que las entradas duplicadas de submódulos se habían agregado a .gitmodules (probablemente de una fusión). Buscamos el camino del que se quejaba git en .gitmodules y encontramos las dos secciones idénticas. Eliminar una de las secciones nos resolvió el problema.
Por lo que vale, git 1.7.1 dio el error "sin mapeo de submódulos", pero a git 2.13.0 no pareció importarle.
fuente