update submodules submodule remote recursive commands absorbgitdirs git git-submodules

submodules - git submodule update recursive



git submodule init no está tirando del último commit (3)

Cada confirmación de git que incluye un submódulo se enlaza con un compromiso particular dentro del repositorio de submódulos.

El comando git submodule update se proporciona para actualizar la versión desprotegida del submódulo a la confirmación que se registra para la versión actual del repositorio principal. En realidad, puede tratarse de una versión más antigua que la que actualmente tiene en ese submódulo, por ejemplo, si está examinando una versión anterior del repositorio principal que usó una versión anterior del submódulo.

Para obtener una versión más nueva del submódulo, cambie a ese directorio y actualícelo como lo haría con cualquier otro repositorio de git (por ejemplo, extracción desde el repositorio ascendente). Si realiza nuevas confirmaciones o si se extrae de un repositorio diferente al que utiliza como fuente para el submódulo, asegúrese de eliminar los cambios. Una vez hecho esto, puede volver al repositorio principal y confirmar el cambio en el submódulo para registrar el nuevo compromiso de submódulo que está utilizando ahora para el submódulo en la versión actual así como en las versiones futuras hasta que realice otra actualización.

Tengo un git repo con un submódulo de git en su interior. El submódulo está alojado en bitbucket. Quiero actualizar mi copia local del submódulo a su último compromiso. Cansé " git submodule update " sin embargo eso no está haciendo nada. Así que intenté eliminar la carpeta de submódulos y luego hacer " git submodule init " Sin embargo, simplemente extrae el compromiso inicial del submódulo, no el último.

¿Cómo puedo hacer que mi submódulo local se actualice a la última confirmación?


Simplemente intente el siguiente comando después de haber agregado sus submódulos.

para git v 1.8.x

git submodule update --init --recursive --remote

para v1.7.x:

git submodule update --init --recursive o git pull --recurse-submodules

para v1.6.x

git submodule foreach git pull origin master

para comprobar su versión git.

git version


Git está haciendo exactamente lo que se supone que debe hacer. git submodule update establecerá tu submódulo en lo que la confirmación actual en el repositorio principal especifica que el submódulo debe tener. De esta manera, puede verificar otra rama, un compromiso anterior o una etiqueta, luego ejecutar git submodule update y el submódulo se ajustará a lo que espera esa referencia para que toda su solución tenga sus dependencias satisfechas.

Lo que necesitas hacer es:

cd mysubmoduledir git fetch git checkout master # or any other branch that you need the latest of git merge origin/master cd - # go back to the top repo git status # should show that your submodule changed git add mysubmoduledir git commit -m "Updated my solution to use latest sub project."

Una versión más corta es:

cd mysubmoduledir git pull # assumes you are already on the branch you need to be on cd - git commit -am "Updated submodule" # assumes you had no other modified files

La palabra "actualizar" no es la mejor para este comando de submódulo. Realmente significa "apunta el submódulo a la confirmación que espera la confirmación del repo principal".

Actualizar un submódulo a un commit diferente (no tiene que ser el más reciente) requiere que cd en ese directorio, lo manipule como un repositorio de git regular para que el commit actual sea lo que desea, luego vuelva a salir y realice este cambio. El repositorio de nivel superior.