El submodule Git agrega: problema "un directory git se encuentra localmente"

En realidad estoy tratando de aprender a usar git, incluidos los subcommands "submodule git". Ya configuré un server en el que puedo alojar, enviar y extraer repositorys de git usando ssh. Creé en este server un repository principal de git "Travail" en el cual me gustaría poner todos mis proyectos como submodules.

En mi repository Travail, ya agregué un proyecto mío como submodule en tools/libft : puedo desarrollar este submodule, presionarlo y extraerlo.

Pero cuando trato de agregar otro submodule (llamado fdf, desde fdf.git en mi server), aparece el siguiente problema:

 git submodule add ssh://XXX.XXX.XXX.XXX:XXXXX/opt/git/fdf.git projets/fdf 

Un directory git para 'projets / fdf' se encuentra localmente con remoto (s): origen ssh: //git@XXX.XXX.XXX.XXX: XXXXX / opt / git / fdf.git Si quieres reutilizar este git local directory en lugar de clonar nuevamente desde ssh: //XXX.XXX.XXX.XXX: XXXXX / opt / git / fdf.git use la opción '–force'. Si el directory git local no es el repository correcto o no está seguro de lo que significa elegir otro nombre con la opción '–name'.

En realidad, no hay subdirectory en los projets/

Leí en otro hilo que debería usar git submodule sync o editar el file .gitmodules en el que la URL del repository de origen de mi submodule podría haber cambiado.

Pero mi file .gitmodules solo contiene la información sobre mi primer submodule (tools / libft), no sobre projets / fdf:

 [submodule "tools/libft"] path = tools/libft url = ssh://git@XXX.XXX.XXX.XXX:XXXXX/opt/git/libft.git 

Como estudiante francés, podría haber perdido algo en la documentation 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 submodule con la misma ruta que un submodule 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 file .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

Puede haber eliminado su 'projets/fdf' del disco, pero su repository 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 submodule.

Probé la solución de jbmilgrom, específicamente probé git rm --cache y eso tampoco me funcionó porque el directory / submodule 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 commands del git submodule y rm todos los otros directorys, empujé a dominar etc … el directory no existía y no había ninguna razón para el caching. Resulta en .git/modules que es donde estaba mintiendo este error.

Si ya borró el directory del submodule, como yo, siga el rest de las instrucciones de jbmilgrom. La key es rm -rf .git/modules/path_to_submodule pero primero haz una copy de security de tu directory de repository principal .

Si solo tiene un submodule, simplemente elimine .gitmodules