Vai al contenuto principale

Git: eliminare un branch. Come rimuovere branch locali e remoti

Questa guida spiega come eliminare i branch in Git — in locale e in remoto — seguendo le best practice per evitare perdite accidentali di dati.
Aggiornato 3 giu 2026  · 15 min leggi

Se usi Git attivamente come me, probabilmente hai accumulato una sfilza di vecchi branch. Alcuni uniti, altri abbandonati e altri ancora di cui non ricordi nemmeno la creazione. Tenerli tutti lì potrebbe non sembrare un problema, ma col tempo possono ingombrare il repository e rendere più difficile seguire il lavoro attivo.

In questa guida ti spiego come eliminare i branch Git in locale e in remoto, illustrando i metodi più sicuri e i potenziali rischi a cui prestare attenzione.

Cosa comporta l’eliminazione di un branch Git?

I branch in Git sono pensati per essere temporanei. Ti offrono uno spazio in cui lavorare su nuove funzionalità, correzioni di bug o esperimenti senza interferire con il codice principale. Ma una volta che un branch ha assolto al suo compito, lasciarlo lì aggiunge solo disordine. Eliminare i branch è, a mio avviso, buona manutenzione per mantenere il tuo flusso di lavoro Git pulito e gestibile.

Voglio ribadire che “eliminare” un branch non equivale a “cancellare” il tuo lavoro. Quando elimini un branch in Git, non stai cancellando i commit, ma solo il riferimento ad essi. Ecco come funziona:

  • Eliminare un branch locale rimuove il branch dal tuo repository personale. Se nessun altro branch o tag fa riferimento a quei commit, potrebbero essere ripuliti in seguito dalla garbage collection di Git.
  • Eliminare un branch remoto rimuove il branch dal repository condiviso (ad esempio GitHub, GitLab, Bitbucket), rendendolo inaccessibile ai collaboratori. Tuttavia, eventuali copie locali di quel branch su altre macchine rimarranno fino a quando non verranno rimosse o aggiornate manualmente.

Perché eliminare un branch?

Eliminare un branch è semplice buona manutenzione. Così come è una buona pratica cancellare foto duplicate, vecchi download e cartelle superate, ci sono vari motivi validi per eliminare un branch quando hai finito di usarlo:

  • Mantiene pulito il repository. Troppi branch, soprattutto se obsoleti, rendono più difficile tracciare il lavoro attivo.
  • Evita confusione. Se un branch non è più rilevante, tenerlo può generare dubbi sul fatto che sia ancora in uso.
  • Migliora la collaborazione. Nei team, eliminare i branch di funzionalità completate segnala che il lavoro è finito ed evita attività inutili su codice superato.
  • Riduce il gonfiore del repository remoto. I repository remoti possono riempirsi di branch stantii, rendendo più difficile per te (o per chi consulta) orientarsi nella storia del progetto.

Se sei alle prime armi con Git o devi configurarlo prima di gestire i branches, dai un’occhiata al tutorial di installazione di Git con istruzioni passo passo.

Eliminare un branch Git locale

Eliminare un branch locale non è difficile: per fortuna è uno dei compiti Git più semplici. Vediamo il modo più sicuro per farlo e a cosa prestare attenzione.

Il comando di base per eliminare un branch locale

Il modo più sicuro per eliminare un branch locale è con il flag -d:

git branch -d <branch_name>

Tieni presente che questo comando funziona solo se il branch è stato completamente unito nel branch corrente (in genere main o master). Se ci sono modifiche non unite, Git ti bloccherà per evitare perdite accidentali di dati.

Forzare l’eliminazione di un branch locale

Se provi a eliminare un branch che ha ancora modifiche non unite, Git non te lo permetterà a meno di forzare l’operazione:

git branch -D <branch_name>

Il flag -D (nota la maiuscola) salta il controllo di sicurezza ed elimina subito il branch, che sia unito o meno. Ti consiglio di usarlo con molta cautela. Qualsiasi lavoro non unito andrà perso a meno che tu non abbia un backup o un altro branch che punti agli stessi commit.

Verificare le modifiche non unite prima di eliminare

Prima di arrivare a eliminare un branch, è una buona idea controllare se contiene modifiche non unite. Puoi farlo con:

git branch --no-merged

Il comando sopra elenca tutti i branch che non sono stati uniti nel branch corrente. Se quello che stai per eliminare appare in questo elenco, ricontrolla di non aver bisogno delle sue modifiche prima di procedere.

Vuoi un promemoria rapido dei comandi Git, inclusa l’eliminazione dei branch? Scarica the handy Git Cheat Sheet.

Eliminare un branch Git remoto

Eliminare un branch remoto è un po’ diverso dall’eliminare uno locale. Poiché i branch remoti esistono in repository condivisi, rimuoverli aiuta a mantenere ordine e impedisce ai branch obsoleti di appesantire i flussi di lavoro del team.

Il comando di base per eliminare un branch remoto

Per eliminare un branch da un repository remoto come GitHub, GitLab o Bitbucket, usa:

git push origin --delete <branch_name>

Questo comando rimuove il riferimento al branch dal repository remoto, rendendolo inaccessibile agli altri. Tuttavia, eventuali copie locali del branch su altre macchine non verranno toccate: dovranno essere ripulite separatamente.

Verificare l’eliminazione del branch remoto

Dopo aver eliminato un branch remoto, devi confermare che sia effettivamente sparito. Per prima cosa, recupera gli ultimi aggiornamenti dal repository remoto:

git fetch --prune

Questo rimuove i riferimenti di tracciamento remoto obsoleti. Per controllare che il branch non sia più elencato, esegui quanto segue:

git branch -r

Il comando sopra mostra tutti i branch remoti rimanenti. Se il branch eliminato compare ancora, prova a eseguire un altro git fetch --prune o verifica di aver eseguito il comando di eliminazione sul remote corretto.

Best practice per eliminare i branch Git

Eliminare i branch è una parte di routine del lavoro con Git, ma farlo nel modo giusto può evitarti grattacapi inutili. Ecco alcune best practice per tenere il repository organizzato ed evitare possibili errori.

Evita di eliminare prematuramente branch non uniti

Prima di eliminare un branch, assicurati che non contenga lavoro non unito ancora necessario. Se non sei sicuro, verifica lo stato con:

git branch --no-merged

Se il branch ha modifiche preziose che non sono state unite, valuta di unirle o archiviarle prima, invece di eliminarlo di colpo.

Elimina dopo il merge

Una volta che una feature o una correzione è stata unita nel branch principale (main o master), non c’è motivo di tenere in giro il vecchio branch. Eliminare i branch uniti aiuta a evitare disordine e rende più facile capire quali branch sono ancora attivi.

Comunica con il tuo team

Per cortesia professionale, quando lavori su un progetto collaborativo, evita di eliminare un branch senza avvisare il team. Può creare confusione o, peggio, interrompere il lavoro di qualcun altro. Prima di rimuovere un branch remoto, verifica con il team che nessuno lo stia ancora usando. Io preferisco un semplice messaggio su Slack o una nota per evitare frustrazione.

Prima di eliminare un branch, potresti voler mettere in ordine la cronologia dei commit facendo squash. Scopri come nella nostra guida ai Git Squash Commits.

Problemi comuni quando si eliminano branch Git

Eliminare branch in Git di solito non dà problemi, ma ci sono alcune trappole comuni. Ecco a cosa fare attenzione e come gestire questi casi se capitano.

Eliminare un branch non completamente unito

Di nuovo: se provi a eliminare un branch che ha ancora modifiche non unite usando git branch -d, Git ti bloccherà per prevenire possibili perdite di dati. È una protezione. Qualsiasi lavoro non unito andrà perso se forzi l’eliminazione con -D.

Se hai già eliminato un branch e ti accorgi di averne ancora bisogno, potresti riuscire a recuperarlo usando il reflog di Git:

git reflog
git checkout -b <branch_name> <commit_hash>

Questo ti permette di ripristinare il branch dal suo ultimo commit noto, se non è già stato completamente eliminato dalla garbage collection.

Eliminare il branch corrente

Git non ti permette di eliminare il branch su cui ti trovi, il che ha senso: altrimenti rimarresti senza un branch attivo. Se vedi un errore quando provi a eliminare un branch, passa prima a un altro branch:

git checkout main

Oppure, se usi Git 2.23+:

git switch main

Una volta su un branch diverso, puoi eliminare in sicurezza quello che intendevi rimuovere.

Devi passare tra branch diversi prima di eliminarne uno? La nostra guida su come fare checkout di un branch remoto in Git ti accompagna passo passo.

Eliminare per sbaglio un branch remoto

Se un branch remoto è stato eliminato per errore, puoi ripristinarlo (ammesso che tu ne abbia ancora una copia locale) rimandandolo al remote:

git push origin <deleted_branch_name>

Questo ricrea il branch sul repository remoto, ripristinando l’accesso ai collaboratori. Se non esiste alcuna copia locale, potresti dover controllare manualmente la cronologia dei commit e ricreare il branch.

Perché non riesco a eliminare un branch Git?

Se hai difficoltà a eliminare un branch in Git, rivedi i problemi comuni: controlla se è completamente unito, se ti trovi attualmente su quel branch, oppure se è un branch remoto. Da qui, potrebbe trattarsi delle impostazioni o dei permessi.

  1. Per prima cosa verifica se ti trovi su quel branch. Git non ti permette di eliminare un branch su cui stai lavorando, quindi devi passare prima a un branch diverso.
  2. Se non è questo il problema, il branch potrebbe avere ancora modifiche non unite. Git protegge i branch con lavoro non unito, quindi, a meno che tu non sia assolutamente sicuro di non aver bisogno di quelle modifiche, dovrai unirle oppure forzare l’eliminazione con git branch -D branch-name.
  3. Se stai cercando di eliminare un branch remoto, un semplice git branch -d non basta. Devi invece eseguire git push origin --delete branch-name e, per ripulire i vecchi riferimenti, puoi usare git fetch --prune.
  4. Alcuni repository, soprattutto su piattaforme come GitHub o GitLab, hanno branch protetti che non possono essere eliminati senza modificare le impostazioni. Se lavori in un repository condiviso, potresti anche aver bisogno dei permessi corretti per eliminare i branch.

Ancora bloccato? Eseguire git branch -v può darti più dettagli sullo stato del branch e aiutarti a capire cosa succede prima di riprovare.

Automatizzare la pulizia dei branch con Git

Amo la buona automazione. Anche se eliminare manualmente i branch va benissimo, ed è importante saperlo fare, c’è un’altra strada. Se gestisci molti branch (come in un contesto di team), l’automazione può farti risparmiare tempo e mantenere tutto più ordinato. Git offre alcuni modi per semplificare la pulizia dei branch, riducendo l’ingombro senza sforzi extra.

Automatizzare la pulizia dei branch remoti

Quando un branch remoto viene eliminato, il tuo Git locale mantiene comunque un riferimento finché non aggiorni manualmente. Invece di ripulirli uno a uno, puoi usare:

git fetch --prune

Il comando sopra rimuove automaticamente i riferimenti locali ai branch che non esistono più sul repository remoto, mantenendo tutto allineato. Eseguirlo regolarmente impedisce l’accumulo di branch obsoleti nel tuo repo locale.

Usa i Git hook per la pulizia

Per team o progetti più grandi, i Git hook possono aiutare ad automatizzare la pulizia dei branch. Gli hook sono script personalizzati che vengono eseguiti in determinati momenti del flusso di lavoro Git, ad esempio dopo un merge. Puoi configurare un hook post-merge per eliminare automaticamente i branch uniti dopo un certo periodo, così che i branch vecchi non rimangano inutilmente.

Conclusione

Col tempo i branch possono diventare disordinati, ma un po’ di “potatura” aiuta a mantenere il repository pulito e il flusso di lavoro efficiente. Abituandoti a eliminare i branch uniti, a ricontrollare quelli non uniti e a mantenere una comunicazione aperta nei progetti di team, puoi evitare questi problemi. E se vuoi fare un passo in più, strumenti di automazione come git fetch --prune e i Git hook possono aiutarti a tenere pulito il repo senza sforzi extra.

Eliminare i branch è solo un passo verso la padronanza di Git. Per approfondire il controllo versione, dai un’occhiata al corso Intermediate Git. Se lavori con repository GitHub, è essenziale una solida comprensione dei concetti chiave di GitHub. Scopri di più nel corso Introduction to GitHub Concepts!

FAQs

Eliminare un branch in Git può influire sul mio codice in produzione?

No, eliminare un branch non influisce sul codice in produzione finché il branch è già stato unito nel tuo branch principale (main o master). Tuttavia, se elimini un branch con modifiche non unite, qualsiasi lavoro non incorporato in un altro branch andrà perso. Controlla sempre lo stato del merge prima di eliminare.

Come evito che il mio team elimini accidentalmente branch importanti?

Se lavori in un repository condiviso (GitHub, GitLab, ecc.), puoi proteggere i branch critici come main e develop impostando regole di protezione dei branch. Questo aiuta a prevenire eliminazioni accidentali e force push non autorizzati. Per i repository locali, valuta l’uso di convenzioni di naming (ad esempio, prefissare i branch attivi con wip- per “work in progress”) per indicare quelli che non dovrebbero ancora essere rimossi.

Esiste un modo per tracciare chi ha eliminato un branch Git remoto?

Sì, nei repository ospitati su GitHub, GitLab o Bitbucket, le eliminazioni dei branch sono di solito registrate nel feed delle attività. Puoi controllare gli audit log del repository o la cronologia dei commit per vedere chi ha eliminato un branch e quando. Per repository Git self-hosted, potresti dover configurare hook lato server per tracciare manualmente le eliminazioni.

Come recupero un branch Git eliminato se ho chiuso il terminale?

Se hai eliminato un branch e non hai chiuso il terminale, puoi annullare con:

git checkout -b <branch_name> <commit_hash>

Ma se hai già chiuso il terminale, la soluzione migliore è usare git reflog.

Questo mostrerà la cronologia delle azioni recenti, incluse le eliminazioni di branch. Trova l’ultimo hash di commit del branch eliminato e usalo per ricreare il branch. Tuttavia, se il branch è stato eliminato sia in remoto che in locale e nessun altro ne ha una copia, il recupero potrebbe non essere possibile.

Qual è la differenza tra `git branch -d` e `git branch -D` nell’uso reale?

  • git branch -d <branch> — Eliminazione sicura. Impedisce l’eliminazione se il branch ha modifiche non unite, fungendo da rete di sicurezza.
  • git branch -D <branch> — Eliminazione forzata. Non verifica se il branch ha modifiche non unite: lo rimuove immediatamente.

Nel mondo reale userai -d la maggior parte delle volte per evitare di perdere lavoro per errore. Usa -D solo quando sei sicuro al 100% che il contenuto del branch non serva più.


Ashlyn Brooks's photo
Author
Ashlyn Brooks

Ashlyn Brooks è una Technical Writer specializzata in piattaforme cloud (Azure, AWS), documentazione API e infrastrutture dati. Con oltre sette anni di esperienza, è abile nel tradurre concetti complessi in contenuti chiari e facili da usare, che migliorano l’esperienza degli sviluppatori e l’adozione dei prodotti.

Argomenti

Approfondisci Git con questi corsi!

Corso

Introduzione a Git

2 h
78.1K
Scopri le basi di Git per gestire le versioni nei tuoi progetti software e dati.
Vedi dettagliRight Arrow
Inizia il corso
Mostra altroRight Arrow
Correlato

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

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

Mostra altroMostra altro