Git: deshacer el último commit
Última actualización
Para deshacer el commit más reciente, decide qué debe pasar con sus cambios. Consérvalos en el área de preparación con git reset --soft HEAD~1, mantenlos sin preparar con un simple git reset HEAD~1 o descártalos con git reset --hard HEAD~1. Si el commit solo está ligeramente mal, git commit --amend lo corrige en el sitio. Si ya lo subiste, usa git revert en lugar de reescribir el historial. Para deshacer un commit más antiguo o varios a la vez, consulta la página de deshacer un commit en Git.
Prueba esto en el terminal playground: una shell real en tu navegador, sin nada que instalar.
Elige qué hacer con los cambios
| Goal | Command |
|---|---|
| Deshacer el commit, conservar los cambios preparados | git reset --soft HEAD~1 |
| Deshacer el commit, conservar los cambios sin preparar | git reset HEAD~1 |
| Deshacer el commit, descartar los cambios | git reset --hard HEAD~1 |
| Corregir el último commit (mensaje o archivos) | git commit --amend |
| Deshacer un commit que ya subiste | git revert HEAD |
Ejemplo práctico
Deshaz el último commit y vuelve a hacerlo con un mensaje mejor.
| Step | Command | Result |
|---|---|---|
| 1 | git reset --soft HEAD~1 | Commit eliminado, los cambios siguen preparados |
| 2 | git commit -m "clearer message" | Vuelve a hacer commit de los mismos cambios |
Preguntas frecuentes sobre deshacer el último commit en Git
¿Cómo deshago el último commit pero conservo los cambios?
git reset --soft HEAD~1. Esto elimina el último commit pero deja sus cambios preparados, así puedes volver a hacer commit de inmediato. Para que los cambios queden sin preparar en tu árbol de trabajo, usa git reset HEAD~1 (el modo por defecto).¿Cómo deshago el último commit y elimino los cambios?
git reset --hard HEAD~1. Esto elimina el commit y descarta sus cambios de tu árbol de trabajo. Es destructivo: si podrías necesitar el trabajo, usa --soft en su lugar o recupéralo más tarde con git reflog.¿Y si solo necesito corregir el mensaje del commit?
git commit --amend. Reabre el último commit para que puedas editar su mensaje (y volver a preparar archivos si hace falta) sin crear un commit separado. Evita enmendar un commit que ya subiste, ya que reescribe el historial.¿Cómo deshago el último commit después de subirlo?
git revert HEAD. Revert crea un nuevo commit que revierte el anterior, dejando el historial intacto: la opción segura para ramas compartidas. Hacer reset de un commit ya subido obliga a todos los demás a reconciliar una rama reescrita.