De hecho, estoy tratando de aprender a usar git, incluidos los git submodulesubcomandos. Ya configuré un servidor en el que puedo alojar, empujar y extraer repositorios git usando SSH. Creé un repositorio principal de Git "Travail" en este servidor en el que me gustaría poner todos mis proyectos como submódulos.
En mi repositorio de Travail, ya agregué un proyecto mío como submódulo en tools/libft: Soy capaz de desarrollar este submódulo, empujarlo y tirar de él.
Pero cuando intento agregar otro submódulo (llamado fdf, de fdf.git en mi servidor), aparece el siguiente problema:
git submodule add ssh://XXX.XXX.XXX.XXX:XXXXX/opt/git/fdf.git projets/fdf
Un directorio git para 'projets / fdf' se encuentra localmente con remoto (s): origen ssh: //[email protected]: XXXXX / opt / git / fdf.git Si desea reutilizar este git local En lugar de clonar nuevamente desde ssh: //XXX.XXX.XXX.XXX: XXXXX / opt / git / fdf.git, use la opción '--force'. Si el directorio git local no es el repositorio correcto o no está seguro de lo que esto significa, elija otro nombre con la opción '--name'.
En realidad no hay subdirectorio en projets/
Leí en otro hilo que debería usar git submodule synco editar el archivo .gitmodules en el que la URL del repositorio de origen de mi submódulo podría haber cambiado.
Pero mi archivo .gitmodules solo contiene la información sobre mi primer submódulo (herramientas / libft), no sobre proyectos / fdf:
[submodule "tools/libft"]
path = tools/libft
url = ssh://[email protected]:XXXXX/opt/git/libft.git
Como estudiante francés, podría haber perdido algo en la documentación en inglés que tengo, pero busqué y realmente no entiendo por qué me sale este problema.
Me alegraría si obtuviera una solución, pero solo una explicación también sería útil.
fuente

/Travail/.git/modules/projets/y encontré unfdfdirectorio. Esto parece no estar en el árbol de trabajo sino en los commits más antiguos. ¿Podría generar el problema?Respuestas:
Llegué a esta publicación SO tratando de agregar un submódulo con la misma ruta que un submódulo que eliminé recientemente.
Esto es lo que finalmente funcionó para mí ( este artículo me ayudó mucho ):
Si aún no ha ejecutado
git rm --cached path_to_submodule(sin barra inclinada)rm -rf path_to_submodule, ¡hágalo!Luego:
Elimine las líneas relevantes del
.gitmodulesarchivo. Por ejemplo, eliminar estos:[submodule "path_to_submodule"] path = path_to_submodule url = https://github.com/path_to_submoduleElimine la sección relevante de .git / config. Por ejemplo, eliminar estos:
[submodule "path_to_submodule"] url = https://github.com/path_to_submodulerm -rf .git/modules/path_to_submoduleEntonces, finalmente puedes:
git submodule add https://github.com/path_to_submodulefuente
git rmyrm -rfpasos)..git/modulesy eso terminó funcionando.probé la solución de jbmilgrom, específicamente lo intenté
git rm --cachey tampoco funcionó para mí ya que el directorio / submódulo no estaba allí. Lo que funcionó para mí fue:rm -rf .git/modules/blahgit submodule add git://path.to.newHice esto después de intentar
--forcedentro de losgit submodulecomandos yrmtodos los demás directorios, empujones para dominar, etc. El directorio no existía y no había razón para el caché. Resulta.git/modulesque ahí es donde estaba este error.fuente
Es posible que haya eliminado su
'projets/fdf'disco, pero su repositorio de Git todavía lo tiene. Usegit rm -rf projets/fdfpara eliminarlo de Git, luego confirme los cambios. Después de eso, podrá agregar esta carpeta como un submódulo.fuente
/tmp/repo, ejecutegit submodule add ../otherrepo.git, verá que esa/tmp/repo/.git/modules/otherrepocarpeta existe. Ese fue el problema para mí. Eliminé manualmente esa carpeta de .git, y todo funcionó.Si ya eliminó el directorio de submódulos, como lo hice, siga el resto de las instrucciones de jbmilgrom. La clave es
rm -rf .git/modules/path_to_submoduleseguir adelante y hacer una copia de seguridad de todo el directorio principal de repositorios primero .Si solo tuvo un submódulo simplemente elimine
.gitmodulesfuente
Estos dos comandos me funcionan.
fuente
.git/modules/. En hay una carpeta que almacena el repositorio para el submódulo. Eliminar ese repositorio solucionó el problema para mí, mientras que la respuesta aceptada no.