Sinopsis
git revert [-n] [-m <parent>] <commit>...
Descripción
El comando git revert crea un nuevo commit que deshace los cambios introducidos por un commit anterior. A diferencia de reset, no reescribe el historial, lo que lo hace seguro de usar en branches compartidos. El resultado es un commit limpio que puede ser pusheado y revisado normalmente.
Hacer revert de un merge commit requiere especificar qué padre tratar como mainline con -m 1. Hacer revert de un revert es la forma común de rehacer un cambio.
En el uso diario, este comando se integra estrechamente con alias de shell, plugins de editor e integración continua. Los usuarios avanzados a menudo añaden alias que combinan los flags que siempre pasan. El formato de salida puede personalizarse vía configuración de Git. Cuando algo sale mal, ejecuta el comando con GIT_TRACE=1 para revelar las llamadas plumbing subyacentes.
Entender cómo este comando interactúa con el resto del modelo de datos de Git rinde dividendos. Cada comando opera sobre algún subconjunto de las piezas (objetos, index, refs, árbol de trabajo), y saber cuáles toca ayuda a predecir resultados y a recuperarse de errores.
Opciones comunes
| Opción | Descripción |
|---|---|
-n, --no-commit | Stage the inverse changes without committing. |
-m <parent-number> | Mainline parent for reverting a merge. |
--continue | Resume after resolving conflicts. |
--abort | Cancel an in-progress revert. |
--skip | Skip the current commit and move on. |
-e, --edit | Edit the revert commit message. |
Ejemplos
git revert HEAD
# Undo the most recent commit with a new commit
git revert abc123..def456
# Revert a range of commits
git revert -m 1 merge-sha
# Revert a merge commit, keeping mainline
git revert -n HEAD~2
# Stage an inverse without committing yet
Errores comunes
Reverting a merge prevents future re-merging of the same branch unless you also revert the revert. Plan accordingly when reverting feature merges. Conflicts during revert require --continue or --abort, just like rebase.
Comandos relacionados
git reset, git restore, git cherry-pick, git log