the submodulos submodule inside index explained already absorbgitdirs git git-submodules

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:

  1. 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

  2. Borre la sección relevante de .git / config. por ejemplo, eliminar estos:

    [submodule "path_to_submodule"] url = https://github.com/path_to_submodule

  3. 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:

  1. rm -rf .git/modules/blah
  2. 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