De hecho, estoy tratando de aprender a usar git, incluidos los git submodule
subcomandos. 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 sync
o 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é unfdf
directorio. 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
.gitmodules
archivo. Por ejemplo, eliminar estos:[submodule "path_to_submodule"] path = path_to_submodule url = https://github.com/path_to_submodule
Elimine la sección relevante de .git / config. Por ejemplo, eliminar estos:
[submodule "path_to_submodule"] url = https://github.com/path_to_submodule
rm -rf .git/modules/path_to_submodule
Entonces, finalmente puedes:
git submodule add https://github.com/path_to_submodule
fuente
git rm
yrm -rf
pasos)..git/modules
y eso terminó funcionando.probé la solución de jbmilgrom, específicamente lo intenté
git rm --cache
y tampoco funcionó para mí ya que el directorio / submódulo no estaba allí. Lo que funcionó para mí fue:rm -rf .git/modules/blah
git submodule add git://path.to.new
Hice esto después de intentar
--force
dentro de losgit submodule
comandos yrm
todos los demás directorios, empujones para dominar, etc. El directorio no existía y no había razón para el caché. Resulta.git/modules
que 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/fdf
para 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/otherrepo
carpeta 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_submodule
seguir adelante y hacer una copia de seguridad de todo el directorio principal de repositorios primero .Si solo tuvo un submódulo simplemente elimine
.gitmodules
fuente
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.