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.