Git: aggiornamento delle informazioni sul ramo remoto


125

In un repository git, è stato eliminato un ramo remoto che non sto monitorando. Quando scrivo

git branch -r

il ramo eliminato viene ancora visualizzato (e posso verificarlo)

Quale comando git devo eseguire per aggiornare queste informazioni?

Risposte:


39

Se esegui qualcosa del genere

git branch -d -r remote_name/branch_name

rimuovi solo il checkout locale. Questo comando non fa nulla al repository remoto, motivo per cui viene ancora visualizzato.

Soluzione:

git push origin :branch_name

rimuoverà il ramo remoto (notare ':') e

git branch -d branch_name

rimuoverà il tuo checkout locale.

( Riferimento )


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

3
Ciò rimuoverà tutti i rami che non sono più tracciati dal repository remoto. Quindi, stai solo attento.
Garrett Hyde,

4
Penso che sia anche utile sapere che, anche se un po 'più dettagliato, puoi usare anche git push <remote> --delete <branchname>per eliminare i rami remoti.
AeroCross

Questo di solito funziona, ma oggi mi trovo in una situazione in cui l'elenco remoto non è stato aggiornato, quindi stavo cercando di eliminare un ramo che non c'era. Così la soluzione @Flo s' al di sotto è stato richiesto prima.
DGO

284

Se sono stati eliminati i rami nel repository remoto e si desidera aggiornare contemporaneamente tutti i rami di localizzazione remota, è possibile utilizzare

$ git remote prune <remotename>

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

Vedi git remotedocumentazione


Grazie @Casey e @Jakub per le tue risposte! Come mai le informazioni sul ramo remoto memorizzate localmente non vengono aggiornate al prossimo utilizzo git fetch?
JJD

4
@JJD: Perché potresti aver basato il tuo lavoro su un ramo remoto che non è più qui. La sua scomparsa senza richiesta era quindi considerata una cattiva idea. Ecco perché è necessario eliminare esplicitamente le filiali di tracciamento remoto.
Jakub Narębski,

"Git gc" pulisce anche i rami remoti stantii?
James Wald,

@JamesWald: No, non lo è. git gccomprime solo oggetti e ref, ed elimina gli oggetti senza riferimento mentre ci sono (con un certo margine di sicurezza).
Jakub Narębski,

186
git remote update --prune

Dovrebbe aggiornare tutti i rami dei telecomandi, aggiungendone di nuovi ed eliminando quelli rimossi.

Modifica: il comando di aggiornamento remoto recupera sostanzialmente l'elenco dei rami sul telecomando. L' --pruneopzione eliminerà i rami di localizzazione remoti locali che puntano a rami che non esistono più sul telecomando .


Questo ha funzionato per me. Avevo bisogno di rimuovere un ramo remoto che per qualche motivo non era in grado di essere rimosso dal solito 'git push origin: <branch_name>'
n0denine

Sarebbe corretto dire che questa risposta fa quello che fa la risposta di Jakub Narębski e altro? Cioè, elimina e recupera gli aggiornamenti?
Frank Tan,

14

Utile anche per vedere nuove filiali remote:

git fetch --all

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

bello n semplice grazie amico, ho un distintivo di risposta in bronzo sulla casa :)
danday74

2

È possibile combinare i flag -re -dper eliminare i rami remoti.


ottimo consiglio! tuttavia, in questo caso, ci sono diversi rami che sono già stati eliminati, sicuramente c'è un comando per recuperare questi aggiornamenti
Bain Markev

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.