Vai al contenuto principale

Git Switch Branch: una guida con esempi pratici

Scopri come passare a un branch in Git usando git switch e capisci le differenze tra git switch e git checkout.
Aggiornato 29 set 2026  · 8 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

I branch in Git rappresentano linee di sviluppo indipendenti, permettendo agli sviluppatori di lavorare in parallelo su più funzionalità o versioni di un progetto.

I branch Git offrono un modo strutturato per gestire le modifiche al codice, consentendo un'integrazione fluida di nuove feature, correzioni di bug e idee sperimentali senza interrompere la codebase principale. 

Diagramma che mostra un progetto con tre branch

Tradizionalmente, si usava il comando git checkout per spostarsi tra i branch. Tuttavia, il comando checkout consente di fare molto di più del semplice cambio di branch, il che può creare confusione e portare a errori.

Introdotto in Git 2.23 nell'agosto 2019, il comando git switch offre un modo più intuitivo per cambiare e creare nuovi branch.

Passare e creare branch con Git switch

Nei progetti complessi, le priorità cambiano continuamente e il flusso di lavoro è spesso non lineare. In genere, ogni branch si concentra su modifiche specifiche, permettendoci di lavorare contemporaneamente su più nuove feature o correzioni di bug, ognuna implementata nel proprio branch.

Ci sono diversi motivi per cui potremmo dover mettere in pausa il lavoro su una feature e spostare l'attenzione su un altro branch, ad esempio:

  • In attesa di una code review.
  • Bloccati da un ostacolo e bisogno di assistenza da un collega.
  • Gestire un hotfix che richiede attenzione immediata.

Passare tra i branch in modo efficiente è fondamentale per mantenere lo sviluppo fluido e assicurarsi che le modifiche finiscano dove devono. Con più attività e collaborazione in team, avere un modo semplice e affidabile per cambiare branch è importante.

Per passare a un branch esistente usando il comando switch, facciamo così:

git switch <branch-name>

Nel comando sopra, <branch_name> va sostituito con il nome del branch a cui vogliamo passare. Poniamo di voler lavorare su una nuova feature presente in un branch esistente chiamato feature-x, useremmo allora il comando:

git switch feature-x

Scoprire i nomi dei branch esistenti

Se vogliamo elencare i branch disponibili, usiamo il comando git branch. Il branch corrente verrà mostrato con un asterisco accanto. Per esempio, se abbiamo tre branch locali chiamati main, feature-x e bug-z, e siamo attualmente sul branch main, l'output sarebbe:

* main
feature-x
bug-z

Passare a un branch remoto

Il comando precedente ci permette di passare a un branch che abbiamo già in locale. Per passare a un branch dal repository remoto, dobbiamo crearne una versione locale usando il comando seguente:

git switch -c <local-branch-name> origin/<remote-branch-name>

Qui, <local-branch-name> è il nome che vogliamo dare al branch in locale, mentre <remote-branch-name> è il nome del branch remoto. In generale, conviene usare lo stesso nome per evitare confusione. Diciamo che non abbiamo il branch feature-x in locale. Possiamo allora crearne una versione locale e passarci, così:

git switch -c feature-x origin/feature-x

Usando lo stesso nome, Git fornisce una scorciatoia con l'opzione --track. Quindi il comando sopra è equivalente a:

git switch --track origin/feature-x

Per elencare i branch remoti, possiamo usare il comando git branch -r.

Il repository locale non tiene traccia automaticamente dei branch remoti. Pertanto, prima di elencare o passare a un branch remoto, è importante aggiornare il repository locale usando git fetch.

Creare un nuovo branch e passarci

Vogliamo creare un branch completamente nuovo per iniziare a lavorare su una nuova feature. In questo caso, possiamo usare il flag -c:

git switch -c <new-branch-name>

Sostituiamo <new-branch-name con il nome del branch. Per esempio, per creare un branch chiamato feature-y procediamo così:

git switch -c feature-y

Tornare al branch precedente

Spesso, dopo aver cambiato branch per fare qualche lavoro, vogliamo tornare al branch su cui stavamo lavorando in precedenza. Git fornisce una scorciatoia con il comando:

git switch -

Git switch vs. Git checkout

Il comando git checkout esiste in Git fin dagli inizi. Prima dell'introduzione di git switch nel 2019, git checkout era il comando usato per passare tra i branch. Tuttavia, la portata di git checkout va oltre il semplice spostamento tra branch. Ecco un riepilogo delle differenze:

  • git switch: ha lo scopo di offrire un modo più intuitivo per cambiare e creare nuovi branch. Mira a semplificare l'insieme dei comandi e ridurre la confusione.
  • git checkout: un comando più versatile che può essere usato per cambiare branch, ma anche per estrarre file e ripristinare contenuti da diversi commit o branch.

Il design di git switch rende più difficile sovrascrivere accidentalmente le modifiche. Ha una sintassi più esplicita per il cambio di branch e la creazione di nuovi branch.

Poiché git checkout fa più cose (cambio di branch, ripristino file, ecc.), c'è una maggiore probabilità di commettere errori durante il suo utilizzo.

Git switch: errori comuni

Gestendo i branch, potresti imbatterti in alcuni problemi comuni. Uno è tentare di creare un branch che esiste già in locale. Un altro errore frequente si verifica quando si prova a cambiare branch con modifiche non confermate. Iniziamo spiegando il primo.

Il branch esiste già in locale

Ogni branch locale deve avere un nome univoco. Puoi usare git switch per creare branch locali in due modi:

1. Per tracciare un branch remoto:

git switch --track origin/<branch-name>

2. Per creare un nuovo branch locale:

git switch -c <branch-name>

In entrambi i casi, se esiste già un branch locale chiamato <branch-name>, Git restituirà un errore che dice:

fatal: a branch named '<branch-name>' already exists

Non possiamo creare un branch con lo stesso nome di un altro branch locale

In questo caso, possiamo passare al branch senza crearlo usando git switch <branch-name>.

Il branch corrente ha modifiche non confermate

Git non ci permetterà di cambiare branch se quello corrente ha modifiche non confermate che verrebbero sovrascritte dal cambio. In questo caso, Git restituirà un errore che dice:

Please commit your changes or stash them before you switch branches.

<code data-mce-selected=

Come indica il messaggio, per superare questa situazione dobbiamo prima fare commit delle modifiche o metterle in stash. Se le modifiche sono pronte per essere inviate al repository dovremmo eseguirne il commit usando:

git commit -m "Commit message"

Se vogliamo mantenere le modifiche ma non siamo pronti a fare commit, possiamo salvarle temporaneamente usando il comando git stash:

git stash

Se mettiamo in stash le modifiche prima di cambiare branch e vogliamo riapplicarle quando torniamo al branch originale, possiamo usare il comando git stash pop.

In alternativa, possiamo anche decidere di scartare le modifiche usando il flag --discard-changes:

git switch --discard-changes <branch-name>

Fai attenzione prima di usare quest'ultima opzione perché le modifiche verranno eliminate in modo permanente.

Uso avanzato di Git switch

Quando devi creare branch da punti specifici della storia del progetto o gestire scenari particolari, git switch offre funzionalità avanzate per soddisfare queste esigenze.

Diramarsi da un punto specifico

Per impostazione predefinita, quando crei un branch con git switch, lo stato iniziale del nuovo branch sarà il HEAD del branch su cui ci troviamo.

Per impostazione predefinita, la creazione di un branch parte dall'attuale HEAD

Immagina di voler iniziare un nuovo branch da un commit precedente specifico. Ogni commit è identificato da un <hash> univoco, che possiamo usare con il comando git switch per creare un nuovo branch da quel commit. Ecco come fare:

switch -c feature-y <hash>

Sostituisci <hash> con l'hash del commit effettivo.

Possiamo creare un branch da un commit specifico fornendo l'hash del commit

Passare a una detached head

Se vogliamo esplorare o sperimentare con un commit specifico senza toccare il branch corrente o crearne uno nuovo, possiamo usare una detached head con il comando:

git switch --detach <hash>

Passare a una detached head

Distaccando la head, possiamo ispezionare in sicurezza lo stato del repository a un commit specifico, eseguire test o apportare modifiche temporanee senza il rischio che tali modifiche vengano accidentalmente inviate al branch di lavoro corrente. I casi d'uso più comuni includono:

  • Visualizzare uno stato precedente: se vogliamo ispezionare o testare un commit più vecchio senza modificare il branch corrente, possiamo passare a quel commit in stato detached.
  • Modifiche temporanee: se vogliamo sperimentare modifiche senza toccare alcun branch, possiamo farlo in stato di detached head. Nota che eventuali nuovi commit creati in questo stato non apparterranno a nessun branch e potremmo dover creare un nuovo branch se vogliamo conservarli.
  • Scopi di build/test: a volte, dobbiamo fare build o test del software a un commit specifico. Passare a uno stato di HEAD staccata su quel commit ci permette di farlo senza alcun impatto sulla struttura dei branch del repository.

Forzare un cambio

Abbiamo visto che Git non ci consente di cambiare branch se ci sono modifiche non confermate che potrebbero andare in conflitto con il branch di destinazione. Se siamo sicuri di voler scartare quelle modifiche e procedere con il cambio, possiamo forzarlo usando l'opzione -f, così:

git switch -f <branch-name>

Ci sono avvertenze importanti da considerare. 

  • Qualsiasi modifica non confermata andrà persa senza preavviso, con il rischio di perdita di lavoro se tali modifiche non sono state salvate altrove. 
  • Usare -f indiscriminatamente può favorire la mancanza di disciplina, incoraggiando gli sviluppatori ad aggirare pratiche corrette di versionamento come lo stash o il commit delle modifiche WIP (work in progress). Questo può portare a una cronologia del repository caotica e complicare la collaborazione. Pertanto, sebbene git switch -f offra velocità e comodità, va usato con giudizio e con chiara consapevolezza dei rischi per evitare possibili svantaggi.

Conclusione

Il comando git switch rende più semplice cambiare e creare branch rispetto al vecchio comando git checkout.

Semplifica il processo e aiuta a ridurre gli errori, rendendo più facile per gli sviluppatori gestire la loro codebase.

Questo comando aiuta a evitare problemi comuni, come sovrascrivere accidentalmente modifiche o confondere le diverse funzioni di git checkout.

Adottarlo può rendere la navigazione tra i branch Git più intuitiva e migliorare la collaborazione all'interno dei team di sviluppo.


François Aubry's photo
Author
François Aubry
LinkedIn
Ingegnere full‑stack e fondatore di CheapGPT. Insegnare è sempre stata la mia passione. Fin dai primi anni da studente, cercavo con entusiasmo occasioni per fare da tutor e aiutare altri studenti. Questa passione mi ha portato a intraprendere un dottorato, durante il quale ho anche svolto il ruolo di assistente alla didattica a supporto del mio percorso accademico. In quegli anni ho trovato enorme soddisfazione nell'ambiente tradizionale dell'aula, creando connessioni e facilitando l'apprendimento. Con l'avvento delle piattaforme di apprendimento online, però, ho riconosciuto il potenziale trasformativo dell'educazione digitale. Di fatto, ho partecipato attivamente allo sviluppo di una di queste piattaforme nella nostra università. Sono profondamente impegnato a integrare i principi dell'insegnamento tradizionale con metodologie digitali innovative. La mia passione è creare corsi non solo coinvolgenti e informativi, ma anche accessibili a chi apprende in questa era digitale.
Argomenti
Git

Impara il version control con questi corsi!

Corso

Introduzione ai concetti di GitHub

2 ore
53.7K
Impara a usare le varie funzioni di GitHub, a muoverti nell'interfaccia e a fare le cose di tutti i giorni in modo collaborativo.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra AltroMostra Altro