Mi proyecto de estructura
ProjectA
-FrameworkA (submodule)
--Twig (submodule of FrameworkA)
¿Cómo puedo actualizar submódulos de forma recursiva? Ya probé algunos comandos git (en ProjectA root)
git submodule foreach git pull origin master
o
git submodule foreach --recursive git pull origin master
pero no puede extraer archivos de Twig.
git
git-submodules
Complez
fuente
fuente
Respuestas:
También es probable que desee utilizar la opción --init que hará que inicialice los submódulos no inicializados:
Nota: en algunas versiones anteriores de Git , si usa la
--init
opción, los submódulos ya inicializados pueden no actualizarse. En ese caso, también debe ejecutar el comando sin--init
opción.fuente
--init
se usa no coincide con mis experiencias en Git 2.2.2. Veo submódulos de nivel superior y anidados que ya se han inicializado, obteniendo el commit correcto verificado cuando lo usogit submodule update --init --recursive
, y creo que la afirmación de que necesita ejecutar el comando con y sin--init
es simplemente incorrecta. A menos que alguien pueda mostrar evidencia de que este es el comportamiento o demostrar que ha cambiado entre versiones y que alguna vez fue cierto, planeo editarlo por completo.La forma en que uso es:
fuente
git submodule foreach git pull --ff-only origin master
git submodule foreach --recursive 'git commit -a | :'
. Lo:
hace bucle independientemente del resultado. Ver enlace stackoverflow.com/questions/19728933/… .Como puede suceder que la rama predeterminada de sus submódulos no lo sea
master
(lo que sucede mucho en mi caso), así es como automatizo las actualizaciones completas de submódulos de Git:fuente
Entering 'Core' fatal: ambiguous argument 'origin/HEAD': unknown revision or path not in the working tree.
dóndeCore
está el submóduloEn Git reciente (estoy usando v2.15.1), lo siguiente fusionará los cambios de submódulos aguas arriba en los submódulos de forma recursiva:
Puede agregar
--init
para inicializar cualquier submódulo no inicializado y usar--rebase
si desea volver a crear una base en lugar de fusionar.Debe confirmar los cambios después:
fuente
git submodule update --remote my-dir/my-submodule
funciona igual de bien