Inicio·Mensajes de error

git · Git

El mensaje

! [rejected] main -> main (non-fast-forward)

Qué significa

Tu rama no es descendiente de la rama remota, así que hacer push tal cual dejaría fuera commits que existen en el servidor. Ocurre cuando reescribiste con rebase, amend o reset commits ya subidos. Si la reescritura fue intencionada y la rama es solo tuya, usa git push --force-with-lease: se niega si el remoto se movió desde tu último fetch, así que, a diferencia de --force sin más, no puede borrar en silencio el push de un compañero que llegó entremedias. Si no fue intencionada, la respuesta es pull --rebase, no forzar.

El arreglo

git push --force-with-lease
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 «! [rejected] main -> main (non-fast-forward)»?

Tu rama no es descendiente de la rama remota, así que hacer push tal cual dejaría fuera commits que existen en el servidor. Ocurre cuando reescribiste con rebase, amend o reset commits ya subidos. Si la reescritura fue intencionada y la rama es solo tuya, usa git push --force-with-lease: se niega si el remoto se movió desde tu último fetch, así que, a diferencia de --force sin más, no puede borrar en silencio el push de un compañero que llegó entremedias. Si no fue intencionada, la respuesta es pull --rebase, no forzar.

Q. ¿Cómo se arregla?

git push --force-with-lease — antes de ejecutarlo, mira arriba qué descarta este comando.

Q. ¿Qué herramienta lo imprime?

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

Errores cercanos