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/X
che 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 bugfix
su 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 X
dalla 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 --prune
o git fetch -p
. Tuttavia, non sarebbe male se lo facessi comunque.
Puoi verificare che anche il ramo di tracciamento remoto sia origin/X
stato 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 X
dalla 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 fetch
con il --prune
o 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 --multiple
opzioni, per eseguire il recupero da molti repository e --prune
opzione 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 --remote
o -r
:
git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter
Guarda anche