Est-ce que git remote update
équivaut à git fetch
?
Réponses
Trop de publicités?Mise à JOUR: plus d'informations!
J'aurais dû faire ça dès le début: je grepped le Git notes de version de Git Git du repo (sorte de méta!)
grep --color=always -R -C30 fetch Documentation/RelNotes/* | less
Puis j'ai fait une less
recherche --all
, et c'est ce que j'ai trouvé sous les notes de version Git version 1.6.6:
git fetch
apprises--all
et--multiple
options, pour courir chercher de nombreux référentiels, et--prune
option de suppression de suivi à distance des branches qui sont allés vicié. Celles -git remote update
etgit remote prune
moins nécessaire (il n'y a pas de plan pour supprimerremote update
niremote prune
, tout de même).
La Version 1.6.6 n'était pas libéré jusqu'à ce que le 23 décembre 2009, et l'Affiche Originale a demandé à sa question sur le 6 décembre 2009.
Donc, comme vous pouvez le voir dans les notes de publication, les auteurs de Git étaient conscients du fait que l' git remote update
fonctionnalité de commande a été dupliqué un peu en git fetch
, mais ils ont décidé de ne pas l'enlever, peut-être pour la rétro-compatibilité avec les scripts et programmes, ou peut-être parce que c'est juste trop de travail et il y a des éléments prioritaires.
Réponse originale à cette question avec plus de détails
xenoterracide de réponse est de 3,5 ans maintenant, et Git a connu plusieurs versions depuis (il a disparu à partir de v1.6.5.5 pour v1.8.3.2 de cette écriture), et en regardant le courant de la documentation pour git remote update
et git fetch
, on dirait qu'ils les deux peuvent effectuer essentiellement la même fonction, celle d'aller chercher de nouvelles validations à partir de plusieurs télécommandes, étant donné les bonnes options et arguments.
Récupération de toutes les télécommandes
Un moyen de récupérer les multiples télécommandes est avec l' --all
drapeau:
git fetch --all
Cela permettra d'extraire de l'ensemble de votre configuration de télécommandes, en supposant que vous n'avez pas d' remote.<name>.skipFetchAll
ensemble pour:
Si la valeur est true, cette distance sera ignoré par défaut lors de la mise à jour à l'aide de git-fetch(1) ou de la mise à jour sous-commande de git-à distance(1). — git-la documentation de la configuration
Ce serait l'équivalent de l'aide
git remote update
sans préciser à distance de votre groupe pour aller chercher, et aussi de ne pas avoir remotes.default
ensemble de vos pensions de configuration, et aussi qu'aucun de vos télécommandes ont remote.<name>.skipDefaultUpdate
la valeur true.
L' actuel 1.8.3.2 documentation pour Git de configuration ne parle pas de l' remotes.default
, mais j'ai consulté Le tout-Puissant Google à ce sujet et a trouvé ce utile explication de Mislav Marohnić:
$ git config remotes.default 'origin mislav staging'
$ git remote update
# fetches remotes "origin", "mislav", and "staging"
Vous pouvez définir une valeur par défaut de la liste de télécommandes pour être récupérée par l'
remote update
commande. Ceux-ci peuvent être télécommandes de vos coéquipiers, de confiance des membres de la communauté d'un projet opensource, ou similaire.
Donc, a priori, si vous avez remotes.default
, et non l'ensemble de vos télécommandes sont répertoriés, git remote update
de ne pas récupérer toutes les télécommandes de votre dépôt est "conscient" de.
Comme pour l' remote.<name>.skipDefaultUpdate
réglage, le Git docs de l'expliquer ainsi:
Si la valeur est true, cette distance sera ignoré par défaut lors de la mise à jour à l'aide de git-fetch(1) ou de la mise à jour sous-commande de git-à distance(1).
L'extraction d'un ensemble de télécommandes
Au lieu de chercher toutes les télécommandes, les deux fetch
et remote update
vous permettent de spécifier de multiples éloignés et les groupes de télécommandes pour récupérer:
git fetch [<options>] <group>
git fetch --multiple [<options>] [(<repository> | <group>)…]
git fetch [<options>] <group>
vous permet d'extraire plusieurs télécommandes qui font partie d'un groupe (pour reprendre un autre exemple de Mislav):
$ git config remotes.mygroup 'remote1 remote2 ...'
$ git fetch mygroup
git fetch --multiple
vous permet de spécifier plusieurs référentiels référentiel et de groupes pour récupérer à la fois (à partir de la documentation):
De permettre à plusieurs
<repository>
et<group>
arguments pour être spécifiée. Pas de<refspec>s
peut être spécifié.
L'ambiguïté git remote update
documentation
Le synopsis d' git remote update
indique que la commande syntaxe est comme suit:
git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)…]
Avis de la dernière partie, [(<group> | <remote>)…]
? La fuite des points ...
implique que vous pouvez spécifier plusieurs groupes et les télécommandes avec la commande, ce qui signifie qu'il se comporte de la même manière qu' git fetch --multiple
...voir comment la syntaxe entre les deux est si semblable?
Cependant, dans le même document, l'explication de l' update
commande ne dit rien sur la spécification de plusieurs groupe et à distance des arguments, mais seulement qu'il
Fetch[es] mise à jour pour 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 la même manière à l' git fetch --multiple
quant à la spécification de chacun des multiples éloignés et à distance multiples groupes.
L'extraction d'une seule télécommande
Enfin, tout le monde sait que le simple cas de l'extraction d'une seule télécommande:
git fetch <remote>
Cela pourrait ê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 de git remote update
n'est pas claire quant à savoir si il est possible de chercher autre chose qu'un seul groupe de télécommandes avec la commande.
Wrapup
Comme je l'ai expliqué, git fetch
et git remote update
comportent de la même façon à l'égard de l'extraction à partir de plusieurs télécommandes. Ils partagent la même syntaxe et les arguments, bien qu' git fetch
est plus courte, de sorte que les gens probablement plus facile à taper et à utiliser.
Il peut être le cas qu' git remote update
ne peut pas être utilisé pour récupérer juste une seule télécommande comme avec git fetch
, mais comme je l'ai souligné, la documentation n'est pas claire à ce sujet.
Côté
La duplication de fonctionnalités entre Git porcelaine commandes, illustré par git fetch
et git remote update
- dessus, n'est pas unique. J'ai remarqué une situation similaire avec git rebase --onto
et git cherry-pick
, cela permet de prendre une série de commits de patch sur une nouvelle base de commettre.
Je suppose que comme Git a évolué au fil des ans, certaines fonctionnalités (inévitablement?) dupliqué, peut-être parfois à titre de commodité pour les utilisateurs finaux (par exemple, il est plus simple de passer d'une gamme à l' cherry-pick
, que pour passer un seul commettre encore et encore choisir une fourchette). Apparemment cherry-pick
n'a pas toujours accepter une gamme de commet, comme expliqué dans la v1.7.Notes de version 2:
git cherry-pick
appris à sélectionner une gamme de commits (par exemple,cherry-pick A..B
etcherry-pick --stdin
), alors n'git revert
; elles ne prennent pas en charge le plus beau de séquençage de contrôlerebase [-i]
a, cependant.