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


DE ACUERDO. Entonces pensé que me habían 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, acabo de clonar el superproyecto, hice lo que creía que debía hacer: "git submodule init", conseguí que apareciera el directorio del submódulo, 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 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 = git@github.com:interstar/BEACHhtml.git

En mi .gitmodules tengo esto:

[submodule "external_libraries/BEACHhtml"]
path = external_libraries/BEACHhtml
url = git@github.com:interstar/BEACHhtml.git

Alguien tiene una idea de lo que falta?


75
2017-09-30 02:49


origen


Respuestas:


Tengo el mismo problema que tú. Este es un error en git: http://lists-archives.com/git/785138-git-submodule-update-is-not-fail-safe.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ínelo y actualice de nuevo para resolver el problema.


164
2017-12-20 09:31



Tuve este problema (una red escamosa, así que me salí el pago de submódulos así) y lo resolví haciendo este script (llamado así git-submodule-fix para 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

3
2017-07-04 12:54



Resuelto eliminando 2 directorios y recuperando el submódulo:

  1. Ir external_libraries/BEACHhtml y mira dentro .git archivo. Su contenido debe ser algo así como gitdir: ../../.git/modules/external_libraries/BEACHhtml
  2. Eliminar ambos external_libraries/BEACHhtml y .git/modules/external_libraries/BEACHhtml directorios.

De ahora en adelante git submodule update funciona sin errores


2
2017-07-26 10:57



Usa una herramienta diff para comparar el clon original que está funcionando y este. Además, ¿qué hace? git submodule salida. Asegúrese de estar apuntando a la misma rama en cada repositorio antes de hacerlo.

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

espero que esto ayude


0
2017-09-30 04:46



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

He intentado todas las respuestas anteriores, pero sin éxito (actualización del submódulo git, ..., eliminación de 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 más antigua, funcionaban sin problemas, pero estaban en Mac. Estoy en Win7 64 bits.


0
2018-03-04 09:55



Estoy en Window7. ejecutar 'rm -rf src / sizzle', puede bien!

E: \ GitHub \ fork \ jquery> rm -rf src / sizzle
Actualización del submódulo E: \ GitHub \ fork \ jquery> git
Ruta del submódulo 'src / sizzle': activada '19c7b3440385c9f628a7bc1c5769f6946fcc6887'

E: \ GitHub \ fork \ jquery> grunt.cmd

...
Guardado como: maestro

Hecho, sin errores


-5
2018-01-18 09:12