Articolo originale: Git Fetch vs Pull: What's the Difference Between the Git Fetch and Git Pull Commands? di freeCodeCamp.org

Tradotto e adattato da: Ilenia Magoni

I comandi di Git pull e fetch sono usati regolarmente dagli utenti di Git. Vediamo qual è la differenza tra questi due comandi.

Per contestualizzare, è bene ricordare che stiamo probabilmente lavorando in un repo clone. Cosa è un clone? È semplicemente un duplicato di un altro repo: praticamente è la tua copia del codice sorgente di qualcun altro.

Detto questo, per tenere il tuo clone aggiornato, avrai bisogno di portare al tuo clone i cambiamenti che possono essere stati fatti all'originale.

È qui che fetch e pull entrano in gioco.

git fetch è il comando che dice al tuo git locale di ottenere i meta-dati più recenti dall'originale (ma non fa nessun trasferimento di file. È più che altro per vedere se ci sono cambiamenti disponibili).

git pull, d'altra parte, fa quello e copia i cambiamenti dal repository remoto.

Per esempio:

git pull origin ankur bugfix

Il punto principale da tenere a mente è che, in genere, ci sono almeno tre copie di un progetto nel tuo spazio di lavoro.

  • Una copia è il tuo repository con la tua storia dei commit (quella già salvata, per così dire)
  • La seconda copia è la tua copia di lavoro dove stai modificando e costruendo (non ancora in un commit sul tuo repository)
  • La terza copia è la copia cache del repository remoto (forse l'originale da cui hai clonato il tuo).

Puoi usare git fetch per conoscere i cambiamenti fatti nel branch/repo remoto dal tuo ultimo pull. Questo è utile per permettere di controllare prima di fare un pull, che potrebbe cambiare i file nel tuo branch corrente e nella copia di lavoro (e potenzialmente perdere i tuoi cambiamenti, ecc).

git fetch    
git diff ...origin