2010-11-11 23 views
60

Creé una rama notmaster para confirmar, así como para presionar algunos cambios. Cuando terminé con esa rama, fusioné los cambios nuevamente en master, los saqué y luego eliminé el notmaster local.¿Cómo elimino una rama remota en Git?

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

hay alguna forma de eliminar el control remoto notmaster?


Un poco más de claridad, con el solution from Ionut:

El método usual para mí no:

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

Esto se debe a que tenía una etiqueta con el mismo nombre que la rama. Esta fue una mala elección en mi nombre y causó la ambigüedad. Así que en ese caso:

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

¡Te amo! ¡He estado tratando de superar el mismo problema durante horas! ¡Es por eso que amo StackOverflow +1! – Logan

Respuesta

50

git push origin :notmaster, que básicamente significa "nada a la notmaster remoto empuje".

+1

error: dst refspec notmaster coincide con más de uno. – chrisaycock

+0

Esa es la primera vez. No he visto ese error antes. –

+2

¡Ah, su segunda sugerencia funcionó! Tengo una etiqueta con la misma etiqueta que esa rama (notmaster). ¿Podría eso causar el error? – chrisaycock

0

Eliminar rama local:

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

Eliminar Gitorious Rama:

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

La segunda de sus dos respuestas es lo que el OP estaba buscando, aunque de ninguna manera es específico para el caso, y no necesita una URL, solo un nombre remoto, que dio el OP. 'origen de git push: notmaster', o en este caso,' origen de git push: refs/heads/notmaster' sería una respuesta más clara. – Cascabel

12
git push origin --delete notmaster 

Si está utilizando Git 1.7.0 o posterior, esto va a hacer el truco . Antes de Git 1.7.0, lo necesario para utilizar el menos intuitivo (pero igualmente eficaz) sintaxis:

git push origin :notmaster 

La sintaxis más antigua todavía funciona en las versiones más recientes de Git, pero la nueva sintaxis parece más humano y más fácil de recordar . Si quiero eliminar una rama, escribir --delete parece lo más natural.

Desde el 1.7.0 release notes:

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

3

Esto ocurrió debido a que el nombre de la rama y la etiqueta es la misma.

Para eliminar la rama de uso remoto

git push origin :refs/heads/branchname

Para eliminar la etiqueta de uso remoto

git push origin :refs/tags/tagname

Para eliminar desde el local se puede utilizar el siguiente.

git branch -d branchname

git tag -d tagname

39

que tenían el mismo problema. Tenía una rama y una etiqueta llamada 3.2. Por eso se dice que hay más de una coincidencia:

git error: dst refspec 3.2 matches more than one. 

Aquí es cómo eliminar la rama:

git push origin :heads/3.2 

Y aquí es cómo eliminar la etiqueta:

git push origin :tags/3.2 
+0

eso es complicado, ¡exactamente mi problema! –

+0

inteligente! ¡Eso funciona! – xtofl

0

Los siguientes pasos puede hacer el truco también:

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