Question git submodule foreach git pull origine master vs git pull --recrutive-submodules


Je gère un référentiel avec plusieurs sous-modules. Pendant un moment, j'ai utilisé

$ git submodule foreach git pull origin master

tirer les derniers changements pour tous ces gars. Cependant, récemment, j'ai appris à propos de

$ git pull --recurse-submodules

et a fait un essai, mais il semble que les changements ne sont récupérés que vous devez

$ git submodule update --recursive

afin de vérifier effectivement les changements. Cependant, ce dernier semble ne rien faire dans mon référentiel malgré les changements de sous-modules. J'ai également remarqué que mes sous-modules sont validés par certains au lieu de maîtres ou de n'importe quelle branche.

  1. Est-ce que je fais quelque chose de manière inappropriée?
  2. Ou est-ce un artefact de la foreach comme je faisais les choses?
  3. Comment puis-je réparer les choses pour que pull --recurse-submodules et submodule update --recursive travailler comme prévu?

3
2017-12-13 02:29


origine




Réponses:


git submodule update --recursive met à jour les sous-modules pour qu'ils correspondent à la validation dans le dépôt parent. Vous devez donc modifier le référentiel parent pour que cette commande fasse quelque chose.

Avec cette configuration:

/proj/.git
/proj/module/.git

Vous apportez des modifications dans "module", validez et poussez les. Dans "proj", vous validez le module (il montre juste la modification du hachage de validation du sous-module).

Maintenant, lorsque vous tirez et mettez à jour le sous-module, il mettra à jour "module" pour utiliser le nouveau commit.


1
2017-10-06 17:13