git sous-module de mise à jour vs git sous-module de synchronisation
La git
la documentation n'est pas claire du tout quelle est la différence entre un git submodule update
et un git submodule sync
est. Je suis aussi de ne pas trouver de l'aide sur le web. Quelqu'un peut-il m'aider à ce que la différence est ici?
update
Update the registered submodules to match what the superproject expects
by cloning missing submodules and updating the working tree of the
submodules. The "updating" can be done in several ways depending on
command line options and the value of submodule.<name>.update
configuration variable.
-
sync
Synchronizes submodules' remote URL configuration setting to the value
specified in .gitmodules. It will only affect those submodules which
already have a URL entry in .git/config (that is the case when they are
initialized or freshly added). This is useful when submodule URLs
change upstream and you need to update your local repositories
accordingly.
Pour référence, je suis en utilisant le client de git version 2.11.0
OriginalL'auteur Benjamin Leinweber | 2017-08-14
Vous devez vous connecter pour publier un commentaire.
update
est essentiellement fairegit pull
dans chaque sous-module (à l'exception sans une branche, puisque le principal repo spécifie un commit directement).La question délicate est
sync
. Imaginez que vous cloner un projet avec des submodules, puis plus tard du projet en amont changements l'un des submodules pour pointer vers une URL différente.Votre copie locale de la sous-module sera pointent toujours vers l'ancienne URL, depuis git jamais permet à des dépôts distants de forcer un changement de la configuration locale. Vous devez exécuter
git submodule sync
pour appliquer la télécommande pensions de la configuration de votre local sous-module repos.Note également que, si vous faites changements pour les submodules, vous pourriez voulez l'Url de l'inadéquation même si, en amont, n'a jamais changé ... mais à l'aide de plusieurs d'une Url distante est probablement une meilleure idée pour ce cas.
Vous pourriez ne pas avoir l'autorisation pour pousser directement à l'opération qui a été utilisé comme un sous-module. Afin de vous pousser à votre fourchette, puis faire une PR pour les principaux sous-module des pensions.
OriginalL'auteur o11c
git submodule update
les mises à jour de la contenu des submodules. C'est effectivement l'exécution d'un "git fetch" et "git checkout" dans chacun de vos submodules.git submodule sync
les mises à jour de la métadonnées sur un sous-module afin de refléter les changements dans le sous-module d'URL. Il re-synchronise les informations de.git/config
avec les informations de l'.gitmodules
.git submodule init
implique unegit submodule sync
ainsi? J'ai été en utilisant une distance repo avec plusieurs submodules et de fairegit submodule init; git submodule update
après ungit pull
et n'ont jamais obtenu de la synchronisation.Je ne sais pas, mais il semble que ce serait relativement facile de test.
OriginalL'auteur larsks