Le brevi risposte
Se desideri spiegazioni più dettagliate dei seguenti comandi, consulta le risposte lunghe nella sezione successiva.
Eliminazione di un ramo remoto
git push origin --delete <branch> # Git version 1.7.0 or newer
git push origin -d <branch> # Shorter version (Git 1.7.0 or newer)
git push origin :<branch> # Git versions older than 1.7.0
Eliminazione di una filiale locale
git branch --delete <branch>
git branch -d <branch> # Shorter version
git branch -D <branch> # Force-delete un-merged branches
Eliminazione di una filiale di localizzazione remota
git branch --delete --remotes <remote>/<branch>
git branch -dr <remote>/<branch> # Shorter
git fetch <remote> --prune # Delete multiple obsolete remote-tracking branches
git fetch <remote> -p # Shorter
La lunga risposta : ci sono tre diversi rami da eliminare!
Quando hai a che fare con l'eliminazione di filiali sia localmente che da remoto, tieni presente che sono coinvolti tre diversi rami :
- La filiale locale
X.
- Il ramo di origine remoto
X.
- Il ramo di localizzazione remoto locale
origin/Xche tiene traccia del ramo remoto X.

Il poster originale utilizzato:
git branch -rd origin/bugfix
Quali cancellato solo il suo locale filiali remote-tracking origin/bugfix , e non la filiale remota reale bugfixsu origin.

Per eliminare quel ramo remoto effettivo , è necessario
git push origin --delete bugfix

Dettagli aggiuntivi
Le seguenti sezioni descrivono ulteriori dettagli da considerare quando si eliminano i rami remoti e di monitoraggio remoto.
La pressione per eliminare i rami remoti rimuove anche i rami di tracciamento remoto
Si noti che l'eliminazione del ramo remoto Xdalla riga di comando mediante a git push rimuoverà anche il ramo di tracciamento remoto locale origin/X , quindi non è necessario potare il ramo di tracciamento remoto obsoleto con git fetch --pruneo git fetch -p. Tuttavia, non sarebbe male se lo facessi comunque.
Puoi verificare che anche il ramo di tracciamento remoto sia origin/Xstato eliminato eseguendo quanto segue:
# View just remote-tracking branches
git branch --remotes
git branch -r
# View both strictly local as well as remote-tracking branches
git branch --all
git branch -a
Potatura dell'origine / X del ramo di localizzazione remota obsoleta locale
Se non hai eliminato il tuo ramo remoto Xdalla riga di comando (come sopra), il tuo repository locale conterrà comunque (un ramo di tracciamento remoto ormai obsoleto) origin/X. Questo può accadere se, ad esempio, hai eliminato un ramo remoto direttamente tramite l'interfaccia web di GitHub.
Un modo tipico per rimuovere questi rami obsoleti di tracciamento remoto (dalla versione 1.6.6 di Git) è semplicemente eseguire git fetchcon il --pruneo più breve -p. Tieni presente che ciò rimuove tutti i rami obsoleti di localizzazione remota per tutti i rami remoti che non esistono più sul telecomando :
git fetch origin --prune
git fetch origin -p # Shorter
Ecco la citazione pertinente dalle note di rilascio 1.6.6 (sottolineatura mia):
"git fetch" appreso --all e --multipleopzioni, per eseguire il recupero da molti repository e --pruneopzione per rimuovere i rami di tracciamento remoti che sono diventati obsoleti. Ciò rende meno necessari "git remote update" e "git remote prune" (non è tuttavia necessario rimuovere "remote update" né "remote prune").
Alternativa alla potatura automatica sopra per rami obsoleti di localizzazione remota
In alternativa, invece di eliminare le filiali obsolete di localizzazione remota locale git fetch -p, puoi evitare di eseguire le operazioni di rete extra semplicemente rimuovendo manualmente le filiali con i flag --remoteo -r:
git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter
Guarda anche