Git Revert
Última actualización
git revert deshace un commit creando un nuevo commit que aplica la inversa de sus cambios. Como añade historial en lugar de reescribirlo, revert es la forma segura de deshacer un commit que ya se ha subido: a diferencia de git reset, no obliga a todos los demás a reconciliar una rama reescrita.
Prueba estos comandos en el terminal playground: una shell real en tu navegador, sin nada que instalar.
Sintaxis
| Command | What it does |
|---|---|
git revert HEAD | Revierte el commit más reciente |
git revert <hash> | Revierte un commit concreto por su hash |
git revert HEAD~2..HEAD | Revierte un rango de commits |
git revert -n <hash> | Revierte pero aún no hace el commit (solo prepara los cambios) |
git revert -m 1 <merge-hash> | Revierte un commit de merge, conservando el padre 1 |
Durante un revert
Si el revert encuentra un conflicto, resuélvelo y continúa.
| Command | What it does |
|---|---|
git revert --continue | Reanuda tras resolver los conflictos |
git revert --abort | Cancela el revert en curso |
git revert --skip | Omite el commit actual y continúa |
revert vs reset
| Behavior | git revert | git reset |
|---|---|---|
| Reescribe el historial | No | Sí |
| Seguro en commits ya subidos | Sí | No |
| Crea un nuevo commit | Sí | No |
| Deshace un commit intermedio | Sí | Complicado |
Preguntas frecuentes sobre git revert
¿Cuál es la diferencia entre git revert y git reset?
git revert añade un nuevo commit que deshace los cambios de uno anterior, dejando el historial intacto: seguro para commits que ya has subido. git reset mueve el puntero de tu rama hacia atrás y reescribe el historial, lo cual está bien para commits locales pero es peligroso en ramas compartidas. Usa revert para deshacer commits públicos y reset para deshacer los locales.¿Cómo revierto un commit que ya se había subido?
Ejecuta
git revert <hash> (o git revert HEAD para el más reciente) y luego sube el nuevo commit de revert. Como revert no reescribe el historial, esta es la forma correcta de deshacer un commit compartido: sin force-push ni interrupciones para los compañeros que ya lo habían descargado.¿Cómo revierto un commit de merge?
Un commit de merge tiene dos padres, así que Git necesita saber qué línea del historial conservar. Usa
git revert -m 1 <merge-hash>, donde -m 1 le indica a Git que conserve el primer padre (normalmente la rama sobre la que hiciste el merge). Revertir un merge deshace los cambios fusionados pero mantiene el merge en el historial.¿Puedo revertir varios commits a la vez?
Sí. Pasa un rango como
git revert HEAD~2..HEAD para revertir los dos últimos commits, o enumera varios hashes. Git crea un commit de revert por cada commit revertido de forma predeterminada; añade -n para preparar todas las reversiones sin hacer commit y luego crea un único commit tú mismo.¿Puedo practicar esto en línea?
Sí. Abre el terminal playground para ejecutar
git revert 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.