Sinossi
git switch [-c <new-branch>] [--detach] <branch>
Descrizione
Il comando git switch, introdotto in Git 2.23, è un sostituto focalizzato per la metà di switching dei branch di git checkout. Cambia solo branch (o crea e cambia in un solo passo). Rifiuta di operare su singoli file, eliminando la fonte più comune di errori di checkout. Se stai imparando Git oggi, preferisci git switch per i branch e git restore per i file.
Come checkout, switch aggiorna HEAD, l'index e la working tree per corrispondere al branch target. Rifiuta di passare se così facendo si calpesterebbero modifiche non committate, a meno che non si passi --force.
Nell'uso quotidiano, git switch si integra con alias, editor e CI.
Capire il modello dati di Git aiuta a prevedere i risultati.
Opzioni comuni
| Opzione | Descrizione |
|---|---|
-c <name>, --create | Crea un nuovo branch e vi passa. |
-C <name>, --force-create | Crea o resetta un branch e vi passa. |
--track | Configura il tracking con un branch remoto. |
--detach | Passa a un commit in modalità detached HEAD. |
- | Passa al branch precedente (come cd -). |
--discard-changes | Butta via le modifiche locali quando passa. |
-m, --merge | Merge a tre vie delle modifiche locali quando passa. |
Esempi
git switch main
# Si sposta al branch main
git switch -c feature/search
# Crea e passa a un nuovo branch
git switch -
# Torna al branch precedente
git switch --detach v3.0.0
# Ispeziona un tag senza creare un branch
Errori comuni
Una confusione comune è aspettarsi che git switch operi sui file come fa git checkout. Non lo farà — usa invece git restore. Se hai lavoro non committato che confligge con il branch target, lo switch fallirà; o committa, fai stash, o usa --merge per tentare un merge a tre vie.
Comandi correlati
git checkout, git restore, git branch, git stash