Cómo eliminar el origen remoto/refs/cabezas/maestro
-
28-10-2019 - |
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.
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.