2010-11-11 15 views
60

Ho creato una filiale notmaster per eseguire il commit e di apportare alcune modifiche. Quando ho finito con quel ramo, ho unito le modifiche di nuovo in master, le ho estratte, e poi cancellato il locale notmaster.Come si elimina un ramo remoto in Git?

$ git branch -a 
* master 
    remotes/origin/master 
    remotes/origin/notmaster 

Esiste comunque la possibilità di eliminare il telecomando notmaster?


Un po 'più di chiarezza, con la solution from Ionut:

Il metodo usuale non riuscito per me:

$ git push origin :notmaster 
error: dst refspec notmaster matches more than one. 

Ecco perché ho avuto un tag con lo stesso nome del ramo. Questa è stata una scelta sbagliata a mio nome e ha causato l'ambiguità. Quindi, in questo caso:

$ git push origin :refs/heads/notmaster 
+2

Ti amo! Ho cercato di superare lo stesso problema per ore ora! Questo è il motivo per cui adoro StackOverflow +1 !!! – Logan

risposta

50

git push origin :notmaster, che in pratica significa "spingere nulla alla notmaster remoto".

+1

errore: dst refspec notmaster corrisponde a più di uno. – chrisaycock

+0

Questo è il primo. Non ho visto prima questo errore. –

+2

Ah, il tuo secondo suggerimento ha funzionato! Ho un tag con la stessa etichetta di quel ramo (notmaster). Potrebbe causare l'errore? – chrisaycock

0

Elimina filiale locale:

git branch -d {branch name} //All changes must be committed first. 
git branch -D {branch name} //Does not require commit. 

Delete Gitorious Branch:

Delete the local branch first. 
git push {gitorious push url} :{branch name} 
+2

La seconda delle tue due risposte è ciò che l'OP stava cercando, anche se non è affatto specifico per essere generoso, e non hai bisogno di un URL - solo un nome remoto, che l'OP ha dato. 'git push origin: notmaster', o in questo caso,' git push origin: refs/heads/notmaster' sarebbe una risposta più chiara. – Cascabel

12
git push origin --delete notmaster 

Se stai usando Git 1.7.0 o successivo, questo farà il trucco . Prima di Git 1.7.0, avete bisogno di usare il meno intuitivo (ma ugualmente efficace) sintassi:

git push origin :notmaster 

La sintassi più vecchio funziona ancora nelle nuove versioni di Git, ma la sintassi più recente sembra più umana e più facile da ricordare . Se voglio eliminare un ramo, digitando --delete sembra la cosa naturale da fare.

Dal 1.7.0 release notes:

"git push" learned "git push origin --delete branch", a syntactic sugar for "git push origin :branch".

3

questo è accaduto perché il nome del ramo e tag è lo stesso.

Per eliminare il ramo di utilizzo remoto

git push origin :refs/heads/branchname

Per eliminare il tag da un uso remoto

git push origin :refs/tags/tagname

Per eliminare dal livello locale è possibile utilizzare il seguente.

git branch -d branchname

git tag -d tagname

39

Ho avuto lo stesso problema. Avevo sia un ramo che un tag chiamato 3.2. Ecco perché si dice che non c'è più di una corrispondenza:

git error: dst refspec 3.2 matches more than one. 

Ecco come cancellare il ramo:

git push origin :heads/3.2 

Ed ecco come eliminare il tag:

git push origin :tags/3.2 
+0

è difficile, esattamente il mio problema! –

+0

Smart! Che funzioni! – xtofl

0

I seguenti passaggi può fare anche il trucco:

$ git fetch --prune --tags 
$ git push origin :refs/tags/{same-branch-tag-name} 
$ git push origin :{same-branch-tag-name} 
$ git push --tags 
Problemi correlati