Quelle est la différence entre `git fetch origin` et` git remote update origin`?

115

En réponse à une question sur l'extraction d'un commit à la fois depuis un référentiel git , il m'a été recommandé d'utiliser à la git remote updateplace de git fetch. J'ai lu les deux pages de manuel mais je ne peux pas dire que j'ai compris non plus dans son intégralité.

Quelqu'un peut-il m'expliquer comment git fetch originet get remote update originse comporter différemment?

Norman Ramsey
la source

Réponses:

133

Cela ne fait aucune différence lorsqu'il est utilisé comme ça.

remote updateest une commande de très haut niveau - elle prend en charge les télécommandes groupées ( remotes.<group> = <list>) et la mise à jour de toutes les télécommandes (sauf celles avec remote.<name>.skipDefaultUpdateset), mais aucune des options plus spécifiques de fetch. Sous le capot, cependant, il fait exactement la même chose que chercher avec les options par défaut.

La réponse recommandant remote updateau lieu de git fetch était en fait de le recommander sans nom distant, juste pour récupérer tout, pas seulement celui nommé comme argument. C'est équivalent à git fetch --all.

Je devrais ajouter la mise en garde que la récupération et la mise à jour à distance n'utilisaient en fait pas le même chemin de code jusqu'à la v1.6.6.1 (sortie le 23 décembre 2009). Même avant cela, cependant, ils ont fait essentiellement la même chose, en utilisant simplement un code différent (se comportant peut-être légèrement différemment dans les cas du coin, mais je ne peux pas penser à aucun de mes pensées).

Cascabel
la source
1
Très intéressant. +1. Si vous regardez les notes de version de Git (que j'ai compilées ici: pastebin.com/LNhRhQS3 ), il semble que seul le 1.7.0 (juste après 1.6.6.2) permette d'utiliser " git fetch --all" à la place de " git remote update".
VonC le
Ah, je n'ai pas vérifié quand fetch --allje suis entré. Je fais tout cela juste par des variations de git log --grep=...et git describe --containsdans mon clone git.git.
Cascabel
Hm, eh bien c'est bizarre - commit 9c4a036b est "Enseignez l'option --all à 'git fetch'", et git describe --contains donne v1.6.6.1~1^2~9. (Même version que le changement de mise à jour à distance que j'ai mentionné dans ma réponse, mis à jour pour y ajouter la version mineure). Peut-être était-il juste tard pour entrer dans les notes de publication?
Cascabel
@Jefromi: belle façon de creuser ces informations, mais je préfère regarder d'abord les notes de version et j'ai été frustré par l'absence d' une page pour toutes les notes de version, d'où mon petit copier-coller dans pastebin.
VonC le
@Jefromi: d'accord ... maintenant je dois trouver un moyen d'agréger tout "ce qui se passe dans Git" afin de voir pourquoi le commit 9c4a036b n'a pas été publié dans la version officielle avant la 1.7;)
VonC