2012-09-05 32 views
5

Quando si esegue branch -a:Eliminazione di una filiale remota

$ git branch -a 
* master 
remotes/origin/HEAD -> origin/master 
remotes/origin/hello 
remotes/origin/master 

E poi tolgo il ramo:

$ git branch -r -D origin/hello 
Deleted remote branch origin/hello (was c0cbfd0). 

Ora vedo:

$ git branch -a 
* master 
remotes/origin/HEAD -> origin/master 
remotes/origin/master 

Il ramo "ciao" ha stato rimosso. Ma quando prelevo:

$ git fetch 
From localhost:project 
* [new hello]  hello  -> origin/hello 

$ git branch -a 
* master 
remotes/origin/HEAD -> origin/master 
remotes/origin/hello 
remotes/origin/master 

Sono così confuso.
Penso che sia stato rimosso, ma è ancora lì.

risposta

6

è necessario rimuovere dalla distanza con il seguente comando:

git push origin --delete hello 

Quando si esegue git branch -rd origin/hello si elimina la filiale locale. Il codice sopra lo rimuove dal repository di origine.

3

Per delete a remote branch, utilizzare

git push origin :remotebranch 

Tutto il resto funziona solo sul repository locale. Nelle versioni più recenti di Git si può anche

git push origin --delete remotebranch 

Come per la documentation, --delete significa lo stesso "come prefisso tutte arbitri con i due punti".

Se vi state chiedendo il significato dello :, segue la sintassi standard per push. Di solito, si può scrivere

git push origin localbranch:remotebranch 

ma qui, è sostituire localbranch con "niente", cancellando in modo efficace il ramo remoto.

0
git push origin --delete somebranch 

è il modo in cui si elimina un ramo remoto. Se siete ancora in una vecchia versione di Git, potrebbe essere necessario usare la vecchia sintassi:

git push origin :somebranch 

che si traduce in "push nulla nel somebranch sul telecomando puntato da origine". Il comando ha la forma "git push (quale repo remoto) (quale riferimento locale) :(quale riferimento remoto). Omettere (quale riferimento) viene interpretato come" non mettere nulla "in (quale riferimento remoto), eliminandolo efficacemente. sintassi più recente è molto più intuitivo.

1

Nota quel ramo git permette solo per l'eliminazione di locali riferimenti.

git branch -r -D origin/hello 

che cancellano solo il puntatore locale a un remote tracking branch, ma che non ha alcuna influenza sulla contenuto del repository remoto stesso
Solo il git push origin :hello, come menzionato nelle altre risposte, lo farebbe.

Inoltre, ciò non modifica la configurazione branch.hello.fetch: fa ancora riferimento all'origine/ciao, motivo per cui il prossimo recupero creerà nuovamente il ramo di monitoraggio remoto nel repository locale.