Git met à jour les sous-modules de manière récursive

Mon projet struture

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é des 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 tirer des fichiers de Twig.

 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 anciennes versions 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 devriez également exécuter la commande sans l’option --init .

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 

Comme il se peut que la twig par défaut de vos sous-modules ne soit pas master (ce qui arrive 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' 

Dans Git récent (j’utilise la v2.15.1), ce qui suit va fusionner les changements de sous-modules en amont dans les sous-modules de manière récursive:

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

Vous pouvez append --init pour initialiser tous les sous-modules non initialisés et utiliser --rebase si vous souhaitez vous rebaser au lieu de fusionner.

Vous devez ensuite valider les modifications:

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