Menu
Coddy logo textTech

Git: Deshacer un commit

Última actualización

Cómo deshacer un commit depende de cuál sea y de si ya lo has subido. Un commit antiguo enterrado en tu historial —o cualquier cosa ya compartida— pide git revert, que añade un nuevo commit que lo revierte sin reescribir nada. Una serie de commits locales recientes se puede eliminar sin más con git reset. Si solo necesitas deshacer el commit más reciente, la página de deshacer el último commit en Git cubre todas las variantes de ese arreglo rápido.

Prueba estos comandos en el terminal playground: una shell real en tu navegador, sin nada que instalar.

Qué comando usar

SituationCommand
Deshacer un commit antiguo, conservar todo lo posteriorgit revert <hash>
Deshacer un commit que ya subistegit revert <hash>
Deshacer los últimos 3 commits locales, conservar el trabajogit reset --soft HEAD~3
Deshacer los últimos 3 commits locales, descartar el trabajogit reset --hard HEAD~3
Deshacer un rango con nuevos commits inversosgit revert HEAD~3..HEAD

reset vs revert

Behaviorgit resetgit revert
Reescribe el historialNo
Seguro en commits subidosNo
Crea un nuevo commitNo
Funciona con commits antiguos en medio del historialNo
Puede descartar cambiosSí (--hard)No

Ejemplo práctico

Deshaz un commit antiguo concreto —incluso uno ya subido— sin tocar los commits que vinieron después.

StepCommandResult
1git log --onelineEncuentra el hash del commit erróneo (p. ej. a1b2c3d)
2git revert a1b2c3dUn nuevo commit lo revierte; los commits posteriores quedan intactos
3git pushComparte el arreglo: no se reescribió el historial

Preguntas frecuentes sobre deshacer un commit en Git

¿Cómo deshago un commit antiguo sin perder los commits posteriores?
Usa git revert <hash>. Revert crea un nuevo commit que revierte solo el que indicas: todos los commits posteriores quedan exactamente como estaban. Encuentra primero el hash con git log --oneline. Si el revert entra en conflicto con cambios posteriores, Git se detiene para que resuelvas y ejecutes git revert --continue.
¿Cómo deshago varios commits a la vez?
Para commits solo locales, git reset --soft HEAD~3 elimina los tres últimos conservando sus cambios preparados (usa --hard para descartarlos). Para commits ya subidos, revierte el rango en su lugar: git revert --no-commit HEAD~3..HEAD revierte los tres, y un único git commit registra la operación.
¿Cómo deshago un commit que ya he subido?
Usa git revert <hash> en lugar de reset. Revert crea un nuevo commit que deshace los cambios del commit objetivo, dejando el historial intacto. Esta es la forma segura de deshacer commits compartidos: reescribir el historial publicado con reset obliga a todos los demás a reconciliar sus copias.
¿Cuándo debo usar reset y cuándo revert?
Usa reset cuando los commits son solo tuyos y todavía locales: simplemente mueve la rama hacia atrás, como si nunca hubieran existido. Usa revert cuando el commit está subido, compartido o en medio del historial: deshace los cambios con un nuevo commit que todos pueden recibir sin problemas.
¿Puedo practicar esto en línea?
Sí. Abre el terminal playground para ejecutar estos comandos en una shell real en tu navegador, sin nada que instalar. El curso interactivo y gratuito de Git de Coddy también cubre cómo deshacer cambios paso a paso.
Coddy programming languages illustration

Aprende Git con Coddy

COMENZAR