Git Force Push
Última actualización
Un git push normal se rechaza cuando tu rama local ha divergido de la remota: Git no sobrescribirá commits que quizá no hayas visto. Forzar el push anula esa comprobación y hace que la rama remota coincida con la local. Lo necesitas tras reescribir el historial (un rebase o un amend), pero puede borrar commits de otras personas, así que recurre al más seguro --force-with-lease.
Prueba esto en el terminal playground: un shell real en tu navegador, sin nada que instalar.
Sintaxis
| Command | What it does |
|---|---|
git push --force | Sobrescribe la rama remota, sin comprobación de seguridad |
git push -f | Forma abreviada de --force |
git push --force-with-lease | Fuerza solo si nadie más ha hecho push mientras tanto |
git push --force-with-lease origin feature | Force push más seguro a una rama con nombre |
--force vs --force-with-lease
| Behavior | --force | --force-with-lease |
|---|---|---|
| Sobrescribe el remoto | Siempre | Solo si no ha cambiado desde tu último fetch |
| Puede borrar commits de otros | Sí | Lo rechaza, salvo que un fetch haya refrescado el lease |
| Recomendado para equipos | No | Sí |
Preguntas frecuentes sobre git force push
¿Cuándo necesito forzar el push?
Cuando has reescrito historial que ya está en el remoto: tras un
git rebase, un git commit --amend o un rebase interactivo que combinó commits. Tu rama local ya no coincide con el historial del remoto, por lo que un push normal se rechaza y solo un force push puede actualizarlo.¿Cuál es la diferencia entre --force y --force-with-lease?
--force sobrescribe la rama remota sin condiciones, lo que puede eliminar en silencio commits que un compañero subió tras tu último fetch. --force-with-lease solo sobrescribe si el remoto sigue en el commit que viste por última vez; si alguien más hizo push mientras tanto, lo rechaza y protege su trabajo. Una advertencia: cualquier fetch (incluido el auto-fetch en segundo plano de un IDE) refresca el lease, así que haz push justo después de comprobar el remoto. Aun así, prefiérelo sobre --force en cualquier rama compartida.¿Es peligroso forzar el push?
Puede serlo. En una rama compartida, un
--force simple puede sobrescribir commits que otros han hecho push, borrando de hecho su trabajo del remoto. Es seguro en una rama que solo usas tú. Ante la duda, usa --force-with-lease, que falla de forma segura en lugar de aplastar cambios que no has visto.¿Cómo deshago un force push?
Si aún tienes los commits antiguos localmente o en
git reflog, puedes resetear tu rama a ellos y volver a forzar el push para restaurar el estado anterior. Esta es una razón más para usar --force-with-lease: hace que las sobrescrituras accidentales sean mucho menos probables de entrada.¿Puedo practicar esto en línea?
Sí. Abre el terminal playground para ejecutar comandos de git push en un shell real en tu navegador, sin nada que instalar. El curso interactivo y gratuito de Git de Coddy también cubre el trabajo con remotos paso a paso.