git revert

Instantáneas básicas

Deshace un commit creando un commit nuevo


El comando 'git revert' deshace un commit anterior añadiendo un commit nuevo que aplica el cambio contrario. El historial no se reescribe — el commit original se queda — así que es la forma segura de deshacer commits ya subidos y compartidos. Puede haber conflicto si commits posteriores tocaron las mismas líneas; resuélvelo y luego git revert --continue.

Sinopsis

git revert [--[no-]edit] [-n] [-m <parent-number>] <commit>...
git revert (--continue | --skip | --abort | --quit)
[ ] opcional| o<arg> valor a sustituir... repetible--flag opción

Opciones

Haz clic en una opción para desplegarla

Principiante (1)

No abre el editor; conserva el mensaje por defecto "Revert …".

RecomendadoEl mensaje de revert por defecto suele ser correcto

Ejemplo

git revert --no-edit HEAD

Intermedio (1)

Aplica los cambios contrarios al directorio de trabajo y al área de preparación sin hacer commit.

Cuando haga faltaCombinar varios reverts en un solo commit

Ejemplo

git revert -n HEAD HEAD~1

Avanzado (1)

Para un commit de fusión: el número del padre (normalmente 1) cuyo lado se conserva.

Cuando haga faltaLa única forma de revertir un commit de fusión

Ejemplo

git revert -m 1 HEAD

Elegir la opción adecuada

revert frente a reset

Dos formas de deshacer commits

ComandoHistorial¿Seguro tras el push?
git revert <commit>Añade un commit que deshaceSí
git reset --hard <commit>Quita commits de la ramaNo — necesita un push forzado

Ejemplos

Deshacer el último commit

git revert HEAD

Crea un commit que deshace HEAD.


Deshacer un commit anterior

git revert a1b2c3d

Deshace ese commit y deja los posteriores.


Deshacer una fusión

git revert -m 1 <merge-commit>

Deshace los cambios que trajo una fusión.

Ejemplos de flujos de trabajo

1
git log --oneline

Encontrar el commit

2
git revert a1b2c3d

Crear el commit que lo deshace

3
git push

Compartirlo — sin forzar

Solución de problemas

error: commit is a merge but no -m option was given

Causa: Una fusión tiene dos padres

Usa git revert -m 1 <commit>

CONFLICTO durante el revert

Causa: Commits posteriores cambiaron las mismas líneas

Arregla los archivos, haz git add y luego git revert --continue (o --abort)

Consejos y trampas

Buenas prácticas

  • ✓Usa revert en commits compartidos; reset solo en los locales.
  • ✓Explica el porqué en el mensaje del revert.
  • ✓Revierte primero el más reciente cuando deshagas varios commits.

Errores comunes

  • ✗Usar git reset en commits subidos en vez de git revert, obligando a todos a arreglar su historial.
  • ✗Revertir una fusión sin -m.
  • ✗Volver a fusionar una rama revertida y no entender por qué no vuelven sus cambios — revierte primero el revert.

Preguntas frecuentes

A:

No. Añade un commit nuevo; el original sigue en el historial.

A:

Sí — vuelve a aplicar el cambio original.

A:

git revert --abort.