Submódulos de Git. Entrando en un nuevo clon del superproyecto

87

OKAY. Así que pensé que tenía esto lamido ... pero ahora ...

Tengo un proyecto que incluye una pequeña biblioteca de GitHub como submódulo. En la versión original de ese superproyecto, el submódulo funciona como se esperaba.

Sin embargo, simplemente cloné el superproyecto, hice lo que pensé que debería: "git submodule init", obtuve el directorio del submódulo para que apareciera, pero está vacío.

Si ahora trato de hacer

git submodule update

yo obtengo

fatal: Needed a single revision 
Unable to find current revision in submodule path 'external_libraries/BEACHhtml'

Si lo intento

git submodule foreach git pull

yo obtengo

Entering 'external_libraries/BEACHhtml'
fatal: Where do you want to fetch from today?
Stopping at 'external_libraries/BEACHhtml'; script returned non-zero status.

En mi .git / config, tengo esto:

[submodule "external_libraries/BEACHhtml"]
    url = [email protected]:interstar/BEACHhtml.git

En mis .gitmodules tengo esto:

[submodule "external_libraries/BEACHhtml"]
path = external_libraries/BEACHhtml
url = [email protected]:interstar/BEACHhtml.git

¿Alguien tiene una idea de lo que falta?

interestar
fuente

Respuestas:

189

Parece que ahora (en 2019) la instalación del último cliente GIT podría resolver el problema de acuerdo con los comentarios a continuación. Esta debería ser la mejor solución por ahora.


Tengo el mismo problema que tú. Este es un error en git: http://git.661346.n2.nabble.com/BUG-git-submodule-update-is-not-fail-safe-td7574168.html

En resumen, para su problema, intente:

# rm -rf external_libraries/BEACHhtml
# git submodule update

Parece que hay algún problema con la carpeta de pago anterior, elimínela y la actualización nuevamente resuelve el problema.

Han He
fuente
1
para mí fue un git-fetch colgado que mantenía la carpeta bloqueada
Mihai Timar
32
Tuve que eliminar tanto el submódulo worktree ( ext/blah) como la carpeta correspondiente debajo de GIT_DIR( .git/modules/ext/blah).
Tobu
2
En mi caso particular, git submodule updateseguí fallando en mi servidor CI porque quería que alguien aceptara las claves RSA (el servidor ci normalmente usa una conexión https y esta fue la primera vez que un submódulo ingresó a una conexión ssh). ¡Espero que le ahorre a alguien una hora de rascarse la cabeza!
Maverik
8
En 2016, este error aún continúa :(
Paulo Neves
6
2017 registrando, todavía presente.
william.taylor
4

Tuve este problema (red inestable, así que obtuve la verificación del submódulo de esta manera) y lo resolví haciendo este script (lo nombré git-submodule-fixpara poder ejecutarlo como git submodule-fix)

#!/bin/bash 

for arg 
do 
  echo $arg 
  find . -name "`basename $arg`" | grep "$arg\$" | xargs rm -fr
done

Si obtiene esto, es decir, de un git submodule update

fatal: Needed a single revision
Unable to find current revision in submodule path 'some/submodule/path'

hacer

git submodule-fix some/submodule/path
git submodule update
epatel
fuente
3

Resuelto eliminando 2 directorios y volviendo a buscar el submódulo:

  1. Vaya a external_libraries/BEACHhtmly busque en el .gitarchivo. Su contenido debería ser algo comogitdir: ../../.git/modules/external_libraries/BEACHhtml
  2. Elimine los directorios external_libraries/BEACHhtmly .git/modules/external_libraries/BEACHhtml.

A partir de ahora git submodule updatecorre sin errores.

Lu55
fuente
es posible que deba ejecutar git submodule initantes git submodule updatepara que el submódulo se reinicie, entonces esto funcionará.
Pellet
1

Si está leyendo en 2019 o posterior, simplemente actualice el cliente git. Trabajó para mi.

vehsakul
fuente
0

use una herramienta de diferenciación para comparar el clon original que está funcionando y este. Además, ¿quégit submodule sale. Asegúrese de estar apuntando a la misma rama en cada repositorio antes de hacerlo.

Sospecho que ha cambiado a una rama o revisión anterior donde el submódulo no estaba definido.

espero que esto ayude

Adam Dymitruk
fuente
0

Tuve el mismo problema con un submódulo en un proyecto. Cuando intenté clonar el submódulo por separado, funcionó bien.

Probé todas las respuestas anteriores, pero sin éxito (actualización del submódulo git, ..., eliminando las carpetas del submódulo, ...).

El problema desapareció después de la actualización de git (de Git-1.7.11-preview20120710) a la última versión (a Git-1.8.1.2-preview20130201) en ese momento. Extrañamente, mis colegas tenían una versión aún más antigua, trabajaban sin problemas, pero estaban en Mac. Estoy en Win7 de 64 bits.

David Lukac
fuente