¿Cómo manejar git gc fatal: referencias de objeto incorrecto/remotos/origen/error HEAD?
Hoy encontré esto al azar mientras intentaba ejecutar la recolección de basura de Git :
$ git gc
fatal: bad object refs/remotes/origin/HEAD
error: failed to run repack
¿Cómo trato con esto?
No entiendo las ramificaciones de esto, pero como se sugiere en este hilo , cuando encontré esto simplemente lo hice.
$ mv .git/refs/remotes/origin/HEAD /tmp
(manteniéndolo a mano por si acaso) y luego
$ git gc
trabajó sin quejarse; No me he encontrado con ningún problema.
Después de ver la respuesta de Trenton, miré .git/refs/remotes/origin/HEAD
y vi que también apuntaba a una rama antigua que ahora está eliminada.
Pero en lugar de editar el archivo yo mismo, probé la solución de Ryan:
git remote set-head origin --auto
Automáticamente configuró el archivo en la nueva rama y git gc
funcionó bien después de eso.
El problema con el que me encontré (que es el mismo problema que @Stavarengo mencionó en este comentario anterior) es que la rama remota predeterminada ( develop
en mi caso) se había eliminado, pero todavía se hacía referencia a ella en .git/refs/remotes/origin/HEAD
.
La apertura .git/refs/remotes/origin/HEAD
en mi editor mostró esto:
ref: refs/remotes/origin/develop
Lo edité cuidadosamente para que apuntara a mi nueva rama predeterminada y todo estuvo bien:
ref: refs/remotes/origin/master
La pista que me avisó fue que al ejecutar git prune
se mostró este error:
> git prune
warning: symbolic ref is dangling: refs/remotes/origin/HEAD