2011-02-03 28 views
18

No me preguntes cómo, pero me las arreglé para conseguir accidentalmente las siguientes ramas remotas en un repositorio git:Cómo eliminar remoto origen/refs/heads/master

$ git branch -r 
    origin/HEAD -> origin/master 
    origin/master 
    origin/refs/heads/master 

Todos apuntan a la misma comprometerse. ¿Cómo puedo eliminar el listado innecesario para origin/refs/heads/master?

he tratado de hacer lo siguiente

$ git push origin :refs/heads/master 
error: dst refspec refs/heads/master matches more than one. 

Pero como se muestra, esto da un error.

Respuesta

15

La solución fue eliminar la rama refs/heads/refs/heads/master

git push origin :refs/heads/refs/heads/master 
39

Eso no es realmente una rama en el control remoto, es solo una referencia local que dice representar algo en el control remoto, así como el origen/maestro representa la rama principal en el control remoto. El nombre completo de la referencia es refs/remotes/origin/refs/heads/master. Todo lo que tiene que hacer para eliminarla es:

git branch -r -d origin/refs/heads/master 

Es vagamente es posible que se las arregló para empujar esto también (pero tendría que tenía que intentarlo más duro para hacerlo). Si es así, me gustaría una simple enumeración de los árbitros de origen:

git ls-remote origin 

y luego, si hay algo estúpida allí, usando git push origin :<refname> a deshacerse de él.

P.S. Si esto no lo hace por usted, va a querer utilizar git for-each-ref para ver todos sus refs, y posiblemente git ls-remote origin para ver todos los remotos, y rastrear exactamente que cosas no pertenecen, con sus nombres de referencias completamente calificados.

+0

Hmm, era origin/refs/heads/refs/heads/master y lo eliminé con 'origen de git push: refs/heads/refs/heads/master' –

+0

@Peter: bueno, eso es lo que supuse el primer párrafo. Estoy impresionado de que hayas logrado llevarlo al control remoto; me tomó un poco descubrir cómo hacerlo yo mismo! Me alegra que lo hayas resuelto. – Cascabel

4

Es

git branch -r -d origin/ref/heads/master 

en lugar de

git branch -r -d origin/refs/heads/master 

en la parte de código para eliminar rama. Hay una diferencia en la palabra ref en el código.

Cuestiones relacionadas