Corso
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.
- 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.
- 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. - Se stai cercando di eliminare un branch remoto, un semplice
git branch -dnon basta. Devi invece eseguiregit push origin --delete branch-namee, per ripulire i vecchi riferimenti, puoi usaregit fetch --prune. - 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 è 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.

