Respuestas:
No entiendo las ramificaciones de esto, pero como se sugiere en este hilo , cuando me encontré con esto, simplemente lo hice
$ mv .git/refs/remotes/origin/HEAD /tmp
(manteniéndolo alrededor por si acaso) y luego
$ git gc
trabajó sin quejarse; No me he encontrado con ningún problema.
git prune
funcionó para mí, una forma de eliminar datos que se han acumulado en Git pero que no están siendo referenciados por nada útil.
$ mv .git/refs/remotes/origin/HEAD /tmp
$ git gc
git prune
git gc
funcionó para mí
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 aún se hacía referencia 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 señalar mi nueva rama predeterminada y todo estaba bien:
ref: refs/remotes/origin/master
La pista que me avisó fue que la ejecución git prune
mostró este error:
> git prune
warning: symbolic ref is dangling: refs/remotes/origin/HEAD
Después de ver la respuesta de Trenton, miré .git/refs/remotes/origin/HEAD
y vi que también apuntaba a una rama vieja que ahora está borrada.
Pero en lugar de editar el archivo yo mismo, probé la solución de Ryan:
git remote set-head origin --auto
Estableció automáticamente el archivo en la nueva rama y git gc
funcionó bien después de eso.
git remote set-head $REMOTE --auto
en mi caso, $ REMOTE es el alias remoto, no el "origen" predeterminado, porque tengo múltiples configuraciones remotas.
Pensé que la solución era la siguiente, ya que parecía funcionar, pero resulta que en realidad no resuelve el problema.
git remote set-head origin --auto
git prune
(como se recomendó en el primer resultado del comando), por lo que no puedo decir exactamente qué me ayudó: primero, segundo o ambos.
git remote set-head origin --auto
reparó mis archivos de referencia / control remoto / origen / HEAD sin que tuviera que usarlogit prune
error: Multiple remote HEAD branches. Please choose one explicitly
y tuve que usar git remote set-head origin mybranch
(mientras la rama 'mybranch' estaba finalizada la compra) para que el error desapareciera.
Parece que sus referencias simbólicas pueden estar rotas ... Intente reemplazarlo con su rama predeterminada de esta manera: Por ejemplo, mi rama predeterminada es master
$ git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/master
$ git fetch --prune
$ git gc
Eso debería arreglarlo.
La causa de esto para mí fue trabajar en una carpeta comprimida en Windows. Cuando la carpeta se descomprimía, corrompía los archivos del paquete, lo que generaba otros problemas extraños, como no ser capaz de eliminar ramas inexistentes.
La única solución era borrar el directorio de trabajo y clonar los remotos remotos nuevamente. Afortunadamente, todavía podía empujar y extraer actualizaciones para asegurar que no se perdiera nada. Todo está bien ahora.
master
otra llamadadevelop
. Días antes de cambiarlo de nuevodevelop
amaster
y eliminé la antigua rama predeterminadadevelop
, pero en mi directorio de trabajo, el archivo.git/refs/remotes/origin/HEAD
todavía apuntaba a lorefs/remotes/origin/develop
que ya no existe. En esta situación, eliminar el archivo funcionó.