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
| Opzione | Descrizione |
|---|---|
-b <name> | Crea e passa a un nuovo branch. |
-B <name> | Crea o resetta un branch e vi passa. |
--track | Configura il tracking per un branch remoto. |
--detach | Fa checkout di un commit in stato detached HEAD. |
-- <path> | Tratta gli argomenti seguenti come path, non come branch. |
-f, --force | Scarta le modifiche locali quando passa. |
-p, --patch | Seleziona 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