Inicio·Mensajes de error

git · Git

El mensaje

error: cannot lock ref 'refs/remotes/origin/main': is at 8a3f21c but expected 1c2d3e4

Qué significa

Cuando git iba a escribir un valor nuevo en una referencia de seguimiento remoto, encontró un valor distinto del que acababa de leer y se negó a sobrescribir. Suele pasar cuando tu editor hace fetch en segundo plano mientras tú también haces fetch, o cuando alguien hizo force push y tus referencias de seguimiento quedaron desajustadas. Repetir el fetch normalmente basta. git remote prune origin limpia las referencias de seguimiento cuyas ramas ya no existen arriba; borra solo las copias dentro de tu repositorio y nunca toca una rama del servidor.

El arreglo

git remote prune origin
Lo imprime
git
Git
29

Casi todos los errores de git son una negativa que significa "hacer eso desde este estado perdería algo"; fatal: indica que git se detuvo sin cambiar nada, y las líneas hint: bajo la primera suelen traer el remedio real.

Cómo leer un mensaje de error

  • Lee desde la primera línea. Cuanto más abajo, más son las tripas de la herramienta; la causa suele estar arriba.
  • Si hay un archivo y un número de línea, empieza ahí: no el marco superior de la pila, sino la línea más alta que nombre un archivo tuyo.
  • Busca el mensaje literal, pero quita antes tus rutas y nombres de variables: eso es lo que impide que la búsqueda coincida.
  • La misma condición se redacta distinto según la versión. Si los resultados no cuadran, añade el número de versión.
  • Antes de pegar un arreglo, comprueba qué descarta. Algunos no se pueden deshacer.

Preguntas frecuentes

Q. ¿Qué significa «error: cannot lock ref 'refs/remotes/origin/main': is at 8a3f21c but expected 1c2d3e4»?

Cuando git iba a escribir un valor nuevo en una referencia de seguimiento remoto, encontró un valor distinto del que acababa de leer y se negó a sobrescribir. Suele pasar cuando tu editor hace fetch en segundo plano mientras tú también haces fetch, o cuando alguien hizo force push y tus referencias de seguimiento quedaron desajustadas. Repetir el fetch normalmente basta. git remote prune origin limpia las referencias de seguimiento cuyas ramas ya no existen arriba; borra solo las copias dentro de tu repositorio y nunca toca una rama del servidor.

Q. ¿Cómo se arregla?

git remote prune origin — antes de ejecutarlo, mira arriba qué descarta este comando.

Q. ¿Qué herramienta lo imprime?

git. Está en Git y el mensaje tiene 11 palabras.

Errores cercanos