Submódulo de Git agregado: problema "se encuentra un directorio git localmente"

Resuelto vmonteco asked hace 10 años • 8 respuestas

De hecho, estoy intentando aprender a usar git, incluidos los git submodulesubcomandos. 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 synco 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.

vmonteco avatar Jan 05 '14 09:01 vmonteco
Aceptado

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:

  1. Elimine las líneas relevantes del .gitmodulesarchivo. por ejemplo, elimine estos:
[submodule "path_to_submodule"]
        path = path_to_submodule
        url = https://github.com/path_to_submodule
  1. Elimine la sección relevante de .git/config. por ejemplo, elimine estos:
[submodule "path_to_submodule"]
        url = https://github.com/path_to_submodule
  1. rm -rf .git/modules/path_to_submodule

Entonces, finalmente podrás:

git submodule add https://github.com/path_to_submodule

jbmilgrom avatar Mar 03 '2016 16:03 jbmilgrom

Probé la solución de jbmilgrom, específicamente lo intenté git rm --cachey tampoco 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

Hice esto después de intentarlo --forcecon los git submodulecomandos y rmtodos 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/modulesque ahí es donde estaba este error.

pjammer avatar Jul 17 '2016 11:07 pjammer

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_submoduleseguir adelante y hacer una copia de seguridad de todo el directorio de repositorio principal primero .

Si solo tuviera un submódulo, simplemente elimine.gitmodules

Dmitri R117 avatar Feb 07 '2017 21:02 Dmitri R117