web-dev-qa-db-fra.com

Git update sous-modules récursivement

Ma structure de projet

ProjectA
-FrameworkA (submodule)
--Twig (submodule of FrameworkA)

Comment puis-je mettre à jour les sous-modules de manière récursive? J'ai déjà essayé quelques commandes git (sur la racine de ProjectA)

git submodule foreach git pull Origin master

ou

git submodule foreach --recursive git pull Origin master

mais ne peut pas extraire les fichiers de Twig.

244
complez
git submodule update --recursive

Vous voudrez probablement aussi utiliser l'option --init qui lui permettra d'initialiser tous les sous-modules non initialisés:

git submodule update --init --recursive

Remarque: dans certaines versions plus anciennes de Git, si vous utilisez l'option --init, les sous-modules déjà initialisés peuvent ne pas être mis à jour. Dans ce cas, vous devez également exécuter la commande sans l'option --init.

522
drewag

La façon dont j'utilise est:

git submodule update --init --recursive
git submodule foreach --recursive git fetch
git submodule foreach git merge Origin master
27
William Entriken

Comme il peut arriver que la branche par défaut de vos sous-modules soit nonmaster (ce qui se produit souvent dans mon cas), voici comment j'automatise les mises à niveau complètes des sous-modules Git:

git submodule init
git submodule update
git submodule foreach 'git fetch Origin; git checkout $(git rev-parse --abbrev-ref HEAD); git reset --hard Origin/$(git rev-parse --abbrev-ref HEAD); git submodule update --recursive; git clean -dfx'
16
Sebastien Varrette

Dans Git récent (j'utilise v2.15.1), les éléments suivants vont fusionner les modifications des sous-modules en amont dans les sous-modules de manière récursive:

git submodule update --recursive --remote --merge

Vous pouvez ajouter --init pour initialiser les sous-modules non initialisés et utiliser --rebase si vous souhaitez modifier la base au lieu de fusionner.

Vous devez ensuite valider les modifications:

git add . && git commit -m 'Update submodules to latest revisions'
10
mrts