Da Anonimo (non verificato) , 29 Aprile 2026

Sinossi

git fetch [<options>] [<remote> [<refspec>...]]

Descrizione

Il comando git fetch scarica nuovi commit, file e ref da un repository remoto nel tuo repo locale, ma NON li mergia nel tuo branch di lavoro. Dopo il fetch, i ref di tracking remoto (come origin/main) sono aggiornati, e puoi ispezionare cosa c'è di nuovo con git log origin/main prima di decidere di mergiare o rebase.

Il fetching è sicuro — non modifica mai la tua working tree o il branch corrente. Molti utenti preferiscono git fetch seguito da un esplicito git merge o git rebase rispetto a git pull, perché dà un chiaro passo di anteprima. Usa --all per fare fetch da ogni remote configurato.

Nell'uso quotidiano, git fetch si integra con alias e CI.

Capire il modello dati di Git aiuta a prevedere i risultati.

Opzioni comuni

OpzioneDescrizione
--allFa fetch da tutti i remote configurati.
--prune / -pRimuove ref di tracking remoto che non esistono più upstream.
--tagsScarica tutti i tag dal remote.
--depth=<n>Limita la profondità della storia scaricata (crea/mantiene un clone shallow).
--unshallowConverte un clone shallow in uno completo.
--dry-runMostra cosa verrebbe scaricato.
--force / -fPermette aggiornamenti non fast-forward dei ref.

Esempi

git fetch
# Aggiorna i ref di tracking remoto da origin

git fetch --all --prune
# Aggiorna da ogni remote e pulisce branch obsoleti

git fetch upstream main
# Scarica solo il branch main da upstream

git fetch --unshallow
# Riempie la storia completa in un clone shallow

Errori comuni

Confondere git fetch con git pull è comune: fetch scarica solo, mentre pull scarica e mergia. Dimenticare --prune lascia una lunga lista di tracking branch obsoleti nel tempo. Configura fetch.prune = true globalmente per rendere il pruning automatico.

Comandi correlati

git pull, git merge, git remote, git ls-remote