ConceptoBloque 2 · Deshacer
Por qué GitHub rechaza el push después de amend o reset
Explicación
GitHub solo acepta un push que agregue commits al final de los que ya tiene.
Es como una lista de asistencia: puedes agregar nombres al final, pero no tachar ni cambiar los que ya están.
Después de un amend o un reset no agregaste commits: cambiaste unos que GitHub ya tenía. Por eso rechaza el push con el error non-fast-forward.
El mensaje sugiere git pull, pero aquí no sirve: juntaría la versión vieja del commit con la nueva. Hay dos caminos:
- Si alguien pudo haber descargado ese commit, no se reescribe: se usa
revert. - Si la rama es solo tuya y nadie la descargó, se fuerza el push.
–force contra –force-with-lease
| Qué hace | |
|---|---|
--force |
Sube tu versión encima de lo que haya, aunque un compañero haya subido algo mientras tanto |
--force-with-lease |
Primero revisa que GitHub siga igual que la última vez que lo viste; si alguien subió algo, se detiene |
Es la diferencia entre guardar encima de un archivo compartido sin fijarte y revisar antes que nadie lo haya cambiado. Por eso se usa siempre --force-with-lease, y nunca en una rama que comparte todo el equipo.