Pregunta

No me preguntes cómo, pero logré obtener accidentalmente las siguientes ramas remotas en un repositorio de Git:

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

Todos apuntan a la misma confirmación. ¿Cómo puedo eliminar la lista innecesaria para origin/refs/heads/master?

Traté 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.

¿Fue útil?

Solución 2

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

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

Otros consejos

En realidad, esa no es una rama en el control remoto: es solo un árbitro local que afirma representar algo en el control remoto, así como Origin/Master representa la rama maestra en el control remoto. El nombre completo del árbitro es refs/remotes/origin/refs/heads/master. Todo lo que tienes que hacer para eliminarlo es:

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

Es vagamente posible que haya logrado impulsar esto también (pero habría tenido que esforzarse más para hacerlo). Si lo hiciera, simplemente enumeraría las referencias de origen:

git ls-remote origin

Y luego, si hay algo estúpido allí, usando git push origin :<refname> deshacerse de eso.

PD: Si esto no lo hace por ti, querrás usar git for-each-ref para ver a todos sus árbitros, y posiblemente git ls-remote origin para ver todos los remotos y rastrear exactamente qué cosas no pertenecen, con sus referencias completamente calificadas.

Es

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

en vez de

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

en la parte del código para eliminar la rama. Hay diferencia en la palabra de referencia en el código.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top