Qual è la differenza tra `git fetch origin` e` git remote update origin`?


115

In risposta a una domanda sull'estrazione di un commit alla volta da un repository git , mi è stato consigliato di usare git remote updateinvece di git fetch. Ho letto entrambe le pagine man ma non posso dire di averle comprese nella loro interezza.

Qualcuno può spiegarmi come git fetch origine get remote update origincomportarmi diversamente?


Risposte:


133

Non fa differenza se usato in questo modo.

remote updateè un comando di livello molto alto: supporta i telecomandi raggruppati ( remotes.<group> = <list>) e l'aggiornamento di tutti i telecomandi (eccetto quelli con remote.<name>.skipDefaultUpdateset), ma non nessuna delle opzioni più specifiche di recupero. Sotto il cofano, però, fa esattamente la stessa cosa del recupero con le opzioni predefinite.

La risposta che consigliava remote updateinvece di git fetch in realtà lo consigliava senza un nome remoto, solo per il gusto di recuperare tutto, non solo quello nominato come argomento. Questo è equivalente a git fetch --all.

Dovrei aggiungere l'avvertenza che il recupero e l'aggiornamento remoto non utilizzavano effettivamente lo stesso codepath fino alla v1.6.6.1 (rilasciata il 23 dicembre 2009). Anche prima, però, facevano essenzialmente la stessa cosa, usando solo codice diverso (forse si comportavano in modo leggermente diverso nei casi d'angolo, ma non riesco a pensare a nessuno dalla parte superiore della mia testa).


1
Molto interessante. +1. Se guardi le note di rilascio di Git (che ho compilato qui: pastebin.com/LNhRhQS3 ), sembra che solo la 1.7.0 (subito dopo 1.6.6.2) consenta di " git fetch --all" essere usato al posto di " git remote update".
VonC

Ah, in realtà non ho controllato quando sono fetch --allentrato. Faccio tutto questo solo con variazioni di git log --grep=...e git describe --containsnel mio clone git.git.
Cascabel

Hm, beh questo è strano - commit 9c4a036b è "Insegna all'opzione --all di 'git fetch'" e git Descrivi --contains dà v1.6.6.1~1^2~9. (Stessa versione della modifica dell'aggiornamento remoto che ho menzionato nella mia risposta, aggiornata per aggiungere la versione della versione minore lì). Forse era solo tardi per entrare nelle note di rilascio?
Cascabel

@Jefromi: bel modo per estrarre queste informazioni, ma preferisco guardare prima le note di rilascio ed ero frustrato dalla mancanza di una pagina per tutte le note di rilascio, da qui il mio piccolo copia-incolla in pastebin.
VonC

@Jefromi: giusto ... ora devo trovare un modo per aggregare tutto il "cosa bolle in pentola in Git" per vedere perché il commit 9c4a036b non è arrivato nella versione ufficiale prima della 1.7;)
VonC
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.