Submódulo de Git agregado: problema "se encuentra un directorio git localmente"
De hecho, estoy intentando aprender a usar git, incluidos los git submodule
subcomandos. Ya configuré un servidor en el que puedo alojar, enviar y extraer repositorios de git mediante SSH. Creé un repositorio principal de git "Travail" en este servidor en el que me gustaría colocar todos mis proyectos como submódulos.
En mi repositorio de Travail, ya agregué un proyecto mío como submódulo en tools/libft
: puedo desarrollar este submódulo, impulsarlo y extraerlo.
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 control remoto: origin ssh:// [email protected] :XXXXX/opt/git/fdf.git Si desea reutilizar este git local directorio 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 ningún subdirectorio enprojets/
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 información sobre mi primer submódulo (tools/libft), no sobre projets/fdf:
[submodule "tools/libft"]
path = tools/libft
url = ssh://[email protected]:XXXXX/opt/git/libft.git
Como estudiante de francés, podría haberme perdido algo en la documentación en inglés que tengo, pero busqué y realmente no entiendo por qué aparece este problema.
Me alegraría obtener una solución, pero también sería útil una simple explicación.
Llegué a esta publicación SO intentando 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 lo ha ejecutado
git rm --cached path_to_submodule
(sin barra diagonal) además de
rm -rf path_to_submodule
Entonces:
- Elimine las líneas relevantes del
.gitmodules
archivo. por ejemplo, elimine 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, elimine estos:
[submodule "path_to_submodule"]
url = https://github.com/path_to_submodule
rm -rf .git/modules/path_to_submodule
Entonces, finalmente podrás:
git submodule add https://github.com/path_to_submodule
Probé la solución de jbmilgrom, específicamente lo intenté git rm --cache
y tampoco funcionó porque 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 intentarlo --force
con los git submodule
comandos y rm
todos los demás directorios, empujar al maestro, etc., el directorio no existía y no había ningún motivo para el almacenamiento en caché. Resulta .git/modules
que ahí es donde estaba este error.
Si ya eliminó el directorio del submódulo, como lo hice yo, 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 de repositorio principal primero .
Si solo tuviera un submódulo, simplemente elimine.gitmodules