Da Anonimo (non verificato) , 29 Aprile 2026

Sinossi

git checkout [<branch>]
git checkout -b <new-branch> [<start-point>]
git checkout [<tree-ish>] -- <file>...

Descrizione

Il comando git checkout storicamente fa due cose non correlate: cambiare branch e ripristinare file. A causa di questo sovraccarico, Git moderno ha introdotto git switch per le operazioni sui branch e git restore per quelle sui file. git checkout funziona ancora e rimane popolare, ma i nuovi utenti sono incoraggiati a imparare i nuovi comandi separati.

Quando viene dato un nome di branch, git checkout sposta HEAD a quel branch e aggiorna la working tree. Quando viene dato un path, sovrascrive il file della working tree con la versione dall'index (o da un commit specificato). Il flag -b crea un nuovo branch e vi passa in un solo passo.

Nell'uso quotidiano, git checkout si integra con alias, editor e CI. Per il debug usa GIT_TRACE=1.

Capire come git checkout interagisce con il modello dati di Git aiuta a prevedere i risultati.

Opzioni comuni

OpzioneDescrizione
-b <name>Crea e passa a un nuovo branch.
-B <name>Crea o resetta un branch e vi passa.
--trackConfigura il tracking per un branch remoto.
--detachFa checkout di un commit in stato detached HEAD.
-- <path>Tratta gli argomenti seguenti come path, non come branch.
-f, --forceScarta le modifiche locali quando passa.
-p, --patchSeleziona interattivamente gli hunk da ripristinare.

Esempi

git checkout main
# Passa al branch main

git checkout -b feature/api origin/develop
# Crea un nuovo branch che traccia origin/develop

git checkout HEAD -- src/config.js
# Scarta le modifiche locali a un singolo file

git checkout v1.2.3
# Detached HEAD a un tag specifico

Errori comuni

Eseguire git checkout <file> sovrascrive silenziosamente le tue modifiche locali senza undo. Usa invece git restore — ha un nome più chiaro. Lo stato detached HEAD sorprende i principianti: i commit fatti lì non appartengono ad alcun branch e possono essere persi quando passi via. Se vuoi mantenerli, crea prima un branch.

Comandi correlati

git switch, git restore, git branch, git reset