2010-10-22 11 views

risposta

35

Se si esegue qualcosa come

git branch -d -r remote_name/branch_name 

si rimuove solo il tuo checkout locale. Questo comando non fa nulla al repository remoto, motivo per cui è ancora visibile.

Soluzione:

git push origin :branch_name 

rimuoverà il ramo a distanza (si noti il ​​':'), e

git branch -d branch_name 

rimuoverà il tuo checkout locale.

(Reference)

+131

Puoi anche eseguire 'git remote prune origin' per ripulire i tuoi riferimenti remoti. – cmcginty

+3

Questo rimuoverà tutti i rami che non sono più tracciati dal repository remoto. Quindi, stai attento. –

+4

Penso che sia anche utile sapere che, anche se un po 'più prolisso, puoi usare 'git push --delete ' per eliminare anche i rami remoti. – AeroCross

2

È possibile combinare i flag -r e -d per eliminare i rami remoti.

+0

grande punta! tuttavia, in questo caso, ci sono diversi rami che sono già stati eliminati, sicuramente c'è un comando per recuperare questi aggiornamenti –

263

Se fosse filiali in repository remoto che ha ottenuto cancellato, e si desidera aggiornare tutte le filiali remote-tracking locali in una sola volta, è possibile utilizzare

$ git remote prune <remotename> 

per eliminare tutti i rami di tracciamento remoto non aggiornati per un dato telecomando (cioè quelli che seguono rami che sono stati rimossi nel repository remoto).

Vedere la documentazione git remote.

+0

Grazie a @Casey e @Jakub per le tue risposte! Come mai le informazioni sul ramo remoto memorizzate localmente non vengono aggiornate la prossima volta che utilizzo 'git fetch'? – JJD

+3

@JJD: Perché potresti aver basato il tuo lavoro sul ramo remoto che non è più qui. Quindi svanire senza chiedere era quindi considerato una cattiva idea. Ecco perché è necessario eliminare in modo esplicito i rami di tracciamento remoto. –

+0

"git gc" ripulisce anche le filiali remote obsolete? –

163
git remote update --prune 

Dovrebbe aggiornare tutti i rami dei telecomandi, aggiungerne di nuovi ed eliminare quelli rimossi.

Modifica: Il comando remote update recupera fondamentalmente l'elenco di rami sul telecomando. L'opzione --prune si sbarazzerà dei rami locali di rilevamento locali che puntano a rami che non esistono più sul remoto.

+0

Questo ha funzionato per me. Avevo bisogno di rimuovere un ramo remoto che per qualche motivo non poteva essere rimosso dalla solita origine 'git push: ' – n0denine

+0

Sarebbe corretto dire che questa risposta fa la risposta di Jakub Narębski e altro? Cioè, prugna e recupera gli aggiornamenti? –

13

anche utile per vedere nuove filiali remote:

git fetch --all 
+0

Questo mi ha aiutato molto. Alcuni bug nel git di Visual Studio impediscono di mostrare i nuovi rami creati dopo la clonazione. Questo comando aiuta a mostrare i nuovi rami –

+0

nice n simple thx dude, avere un badge di risposta in bronzo sulla casa :) – danday74

Problemi correlati