¿Cómo se elimina una referencia de rama remota no válida de Git?
En mi repositorio actual tengo el siguiente resultado:
$ git branch -a
* master
remotes/origin/master
remotes/public/master
Quiero eliminar remotes/public/master
de la lista de sucursales:
$ git branch -d remotes/public/master
error: branch 'remotes/public/master' not found.
Además, el resultado de git remote
es extraño, ya que no enumera public
:
$ git remote show
origin
¿Cómo puedo eliminar 'remotes/public/master' de la lista de sucursales?
Actualización, probé el git push
comando:
$ git push public :master
fatal: 'public' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
Es posible que necesites una limpieza:
git gc --prune=now
o quizás necesites una ciruela pasa:
git remote prune public
ciruela pasa
Elimina todas las ramas de seguimiento obsoletas en <nombre>. Estas ramas obsoletas ya se han eliminado del repositorio remoto al que hace referencia <nombre>, pero todavía están disponibles localmente en "remotes/<nombre>".
Con la opción --dry-run, informe qué ramas se podarán, pero en realidad no las pode.
Sin embargo, parece que deberían haberse limpiado antes con
git remote rm public
habitación
Elimine el control remoto llamado <nombre>. Se eliminan todas las ramas de seguimiento remoto y los ajustes de configuración del control remoto.
Por lo tanto, es posible que haya editado manualmente su archivo de configuración y esto no ocurrió, o que tenga problemas de privilegios.
Quizás vuelva a ejecutarlo y vea qué sucede.
Contexto del consejo
Si echas un vistazo a los registros de revisión , notarás que sugerí técnicas más "correctas", que por alguna razón no querían funcionar en su repositorio.
Sospeché que el OP había hecho algo que dejó su árbol en un estado inconsistente que provocó que se comportara un poco extraño, y git gc
se le pidió que arreglara el trozo que quedó atrás.
Por lo general, git branch -rd origin/badbranch
es suficiente para bombardear una sucursal de seguimiento local o git push origin :badbranch
para bombardear una sucursal remota y, por lo general , nunca necesitarás llamar.git gc
Todo lo que necesitas hacer es
git fetch -p
Eliminará todas sus sucursales locales que se eliminan de forma remota.
Si tienes git 1.8.5+, puedes configurar esto automáticamente
git config fetch.prune true
o
git config --global fetch.prune true