Question

est git remote update l'équivalent de git fetch?

Était-ce utile?

La solution

Mise à jour: plus d'informations

Je l'ai fait depuis le début: (! Si meta) Je les notes rassemblés de libération Git dans le repo Git Git

grep --color=always -R -C30 fetch Documentation/RelNotes/* | less

Alors je fait une recherche de less pour --all, et ce que j'ai trouvé sous la notes de version pour la version Git 1.6.6 :

  

git fetch appris options --all et --multiple, pour exécuter rapportez de nombreux référentiels et option --prune pour enlever les branches de suivi à distance qui sont allés rassis. Ceux-ci font git remote update et git remote prune moins nécessaire (il n'y a pas de plan pour enlever remote update ni remote prune, cependant).

Version 1.6.6 n'a pas été libéré jusqu'à ce que Décembre 23, 2009 , et l'affiche originale a posé sa question le 6 Décembre 2009.

Comme vous pouvez le voir dans les notes de version, les auteurs de Git étaient au courant du fait que la fonctionnalité de commande git remote update était dupliqué un peu par git fetch, mais ils ont décidé de ne pas l'enlever, peut-être pour la compatibilité avec les scripts existants et programmes, ou peut-être parce qu'il est tout simplement trop de travail et il y a des éléments prioritaires.


Réponse originale avec plus de détails

réponse de xenoterracide est de 3,5 ans maintenant, et Git a connu plusieurs versions depuis lors (il est passé de git remote update et git fetch noreferrer, on dirait qu'ils les deux peuvent effectuer essentiellement la même fonction d'aller chercher de nouveaux commits de plusieurs télécommandes , étant donné les bonnes options et arguments.

Récupération de toutes les télécommandes

Une façon de chercher plusieurs télécommandes est avec le drapeau de --all:

git fetch --all

Cela ira chercher de toutes vos télécommandes configurées, en supposant que vous ne disposez pas de jeu remote.<name>.skipFetchAll pour eux:

  

Si cela est vrai, cette télécommande est ignorée par défaut lors de la mise à jour en utilisant -git fetch (1) ou la sous-commande de mise à jour de git-distance (1) . - documentation-config git

Cela équivaudrait à utiliser

git remote update

sans spécifier de groupe à distance pour aller chercher, et aussi de ne pas avoir de jeu remotes.default dans votre configuration de prise en pension, et que aucun de vos télécommandes ont remote.<name>.skipDefaultUpdate la valeur true.

documentation actuelle 1.8.3.2 pour la configuration de Git ne mentionne pas le paramètre remotes.default, mais je consulté le Tout-Puissant Google à ce sujet et trouvé cela utile explanation de Mislav Marohnic :

$ git config remotes.default 'origin mislav staging'
$ git remote update

# fetches remotes "origin", "mislav", and "staging"
  

Vous pouvez définir une liste par défaut des télécommandes à extraire par la commande remote update. Ceux-ci peuvent être de vos coéquipiers Distants, membres de la communauté de confiance d'un projet opensource, ou similaire.

On peut donc supposer, si vous avez ensemble remotes.default, et non toutes vos télécommandes sont répertoriés dans, puis git remote update ne récupère pas toutes les télécommandes que votre pension est « au courant » de.

En ce qui concerne le réglage de remote.<name>.skipDefaultUpdate, la documentation Git expliquent ainsi:

  

Si cela est vrai, cette télécommande est ignorée par défaut lors de la mise à jour en utilisant -git fetch (1) ou la sous-commande de mise à jour de git-distance (1) .

Récupérer un groupe spécifié de télécommandes

Au lieu d'aller chercher toutes les télécommandes, les deux fetch et remote update vous permettent de spécifier plusieurs télécommandes et groupes de télécommandes chercher:

git fetch [<options>] <group>
git fetch --multiple [<options>] [(<repository> | <group>)…]

git fetch [<options>] <group> vous permet d'aller chercher plusieurs télécommandes qui font partie d'un groupe (pour emprunter un autre exemple Mislav ):

$ git config remotes.mygroup 'remote1 remote2 ...'
$ git fetch mygroup

git fetch --multiple vous permet de spécifier plusieurs référentiels et des groupes de référentiel pour aller chercher à la fois ( les docs ):

  

Permettre plusieurs arguments de <repository> et <group> à préciser. Aucune <refspec>s peut être spécifié.

Ambiguïté dans la documentation git remote update

Le à distance pour git remote update précise que la syntaxe de commande est la suivante:

git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)…]

Remarquez la dernière partie, [(<group> | <remote>)…]? Les points de suivi ... implique que vous pouvez spécifier plusieurs groupes et DCD avec la commande, ce qui voudrait dire qu'il se comporte de la même manière que git fetch --multiple ... voir comment la syntaxe entre les deux est si semblable?

Cependant, dans le même document, l'explication de la commande update ne dit rien sur la spécification groupe et plusieurs arguments à distance, mais seulement qu'il

  

Fetch [es] pour les mises à jour un ensemble nommé de télécommandes dans le référentiel tel que défini par remotes.<group>.

Il est donc difficile de savoir si git remote update fonctionne de manière identique à git fetch --multiple en ce qui concerne la spécification de plusieurs télécommandes individuelles et plusieurs groupes distants.

Récupérer une seule télécommande

Enfin, tout le monde connaît le cas simple d'aller chercher une seule télécommande:

git fetch <remote>

Il est peut-être le cas que vous pouvez également utiliser

git remote update <remote>

pour faire la même chose, mais comme je l'ai mentionné dans la section précédente, la documentation git remote update ne sait pas de savoir s'il est possible d'aller chercher autre chose qu'un simple groupe de télécommandes avec la commande.

Wrapup

Comme je l'ai expliqué, git fetch et git remote update se comportent de la même en ce qui concerne l'extraction de plusieurs télécommandes. Ils partagent la même syntaxe et les arguments, bien que git fetch est plus courte, doncles gens trouvent probablement plus facile à taper et à utiliser.

Il peut être le cas que git remote update ne peut pas être utilisé pour aller chercher juste une seule télécommande comme avec git fetch, mais comme je l'ai fait remarquer, la documentation ne fait pas clairement.

Mis

La duplication de fonctionnalité entre les commandes de porcelaine Git, illustré par git fetch et git remote update ci-dessus, ne sont pas uniques. Je l'ai remarqué une situation similaire avec git rebase --onto et git cherry-pick dans la mesure où les deux peuvent prendre une série de commits patcher sur un commit base.

Je suppose que Git a évolué au fil des années, certaines fonctionnalités était (forcément?) En double, peut-être parfois à titre de commodité pour les utilisateurs finaux (par exemple, il est plus simple de passer une gamme de cherry-pick, que de passer un engager encore et de choisir une plage). Apparemment cherry-pick ne pas toujours accepter une gamme de commits, comme expliqué dans la section communiqué de v1.7.2 note :

  

git cherry-pick appris à choisir une gamme de commits (par exemple cherry-pick A..B et cherry-pick --stdin), donc a fait git revert; ceux-ci ne prennent pas en charge a, bien que le rebase [-i] plus agréable de contrôle de séquençage.

Autres conseils

Oui et non. git remote update va chercher de toutes les télécommandes, pas seulement un.

Sans regarder le code pour voir si remote update est juste un script shell (possible) il, au fond, pour chaque court chercher à distance. git fetch peut être beaucoup plus granulaire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top