submodulos - git subtree
El submódulo Git agrega: problema "un directorio git se encuentra localmente" (4)
En realidad estoy tratando de aprender a usar git, incluidos los subcomandos "submódulo git". Ya configuré un servidor en el que puedo alojar, enviar y extraer repositorios de git usando ssh. Creé en este servidor un repositorio principal de git "Travail" en el cual me gustaría poner todos mis proyectos como submódulos.
En mi repositorio Travail, ya agregué un proyecto mío como submódulo en tools/libft
: puedo desarrollar este submódulo, presionarlo y extraerlo.
Pero cuando trato de agregar otro submódulo (llamado fdf, desde 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 quieres 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 significa elegir otro nombre con la opción ''--name''.
En realidad, no hay subdirectorio en los 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 (tools / libft), no sobre projets / 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 aparece este problema.
Me alegraría si tuviera una solución, pero solo una explicación sería útil también.
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 ayudó mucho ):
Si aún no ha ejecutado git rm --cached path_to_submodule
(sin barra diagonal), así como rm -rf path_to_submodule
, ¡haga eso!
Entonces:
Elimine las líneas relevantes del archivo
.gitmodules
. por ejemplo, eliminar estos:[submodule "path_to_submodule"] path = path_to_submodule url = https://github.com/path_to_submodule
Borre 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
Probé la solución de jbmilgrom, específicamente probé git rm --cache
y eso tampoco me 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
Lo hice después de probar --force
dentro de los comandos del git submodule
y rm
todos los otros directorios, empujé a dominar etc ... el directorio no existía y no había ninguna razón para el caché. Resulta en .git/modules
que es donde estaba mintiendo este error.
Puede haber eliminado su ''projets/fdf''
del disco, pero su repositorio de Git todavía lo tiene. Utilice git rm -rf projets/fdf
para eliminarlo de Git, luego realice los cambios. Después de eso, podrás agregar esta carpeta como un submódulo.
Si ya borró el directorio del submódulo, como yo, siga el resto de las instrucciones de jbmilgrom. La clave es rm -rf .git/modules/path_to_submodule
pero primero haz una copia de seguridad de tu directorio de repositorio principal .
Si solo tiene un submódulo, simplemente elimine .gitmodules