¿Cómo se elimina una referencia de rama remota no válida de Git?

Resuelto cmcginty asked hace 15 años • 13 respuestas

En mi repositorio actual tengo el siguiente resultado:

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

Quiero eliminar remotes/public/masterde la lista de sucursales:

$ git branch -d remotes/public/master
error: branch 'remotes/public/master' not found.

Además, el resultado de git remotees 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 pushcomando:

$ git push public :master
fatal: 'public' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
cmcginty avatar Jul 02 '09 09:07 cmcginty
Aceptado

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 gcse 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 :badbranchpara bombardear una sucursal remota y, por lo general , nunca necesitarás llamar.git gc

Kent Fredric avatar Jul 02 '2009 02:07 Kent Fredric

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
Pawan Maheshwari avatar Nov 24 '2011 10:11 Pawan Maheshwari