Ir al contenido principal

Git revertir última confirmación: Cómo deshacer de forma segura un cambio en Git

Aprende a utilizar git revert para deshacer tu última confirmación Git sin reescribir el historial. Comprende sus efectos, compáralo con git reset y gestiona casos extremos reales.
Actualizado 8 jul 2025  · 8 min de lectura

En el desarrollo de software, los errores son una parte inevitable del proceso, pero la forma de abordarlos es importante, especialmente en un equipo.

Cuando trabajas con Git en un repositorio compartido, no solo quieres deshacer una confirmación errónea, sino que quieres hacerlo de forma segura. Por eso he escrito, basándome en mi experiencia, un artículo en git revert.

En lugar de borrar la historia como git reset, git revert crea una nueva confirmación que deshace los cambios realizados en una anterior. Este enfoque conserva tu historial de confirmaciones.

Si eres nuevo en estos conceptos, realiza nuestro programa de habilidades Fundamentos de Git y aprende todo sobre los repositorios y el control de versiones.

¿Qué es Git Revert y cómo funciona?

Piensa en « git revert » como la forma que tiene Git de decir «Deshagamos eso de forma segura». Cuando se te escapa algo en una confirmación, ya sea un error, una falta ortográfica o un cambio apresurado, es posible que te sientas tentado a eliminarlo. Pero en un repositorio compartido, eliminar el historial puede causar más problemas que el error original. Por eso existe git revert. En lugar de borrar la confirmación, añade una nueva que cancela los cambios.

Entonces, ¿qué hace git revert ?

  • Añade una nueva confirmación: Como ya he mencionado, en lugar de borrar nada, « git revert » crea una nueva confirmación que deshace los cambios específicos de la que estás revirtiendo. Esto mantiene la coherencia del historial de tu proyecto.

  • El cambio se aplica inmediatamente: Como aún no he mencionado, tan pronto como ejecutas el comando « git revert », los cambios revertidos aparecen en tu directorio de trabajo. Así podrás ver la corrección en directo.

  • No interfiere con la puesta en escena (a menos que haya un conflicto): Otra cosa que debes saber: Git gestiona la reversión internamente. Si todo va bien, no es necesario preparar los archivos manualmente. Sin embargo, si Git no puede averiguar cómo revertir algo (como en fusiones complejas), te pedirá que intervengas y le ayudes.

¿Qué sucede después de revertir una confirmación?

Así que has ejecutado git revert. ¿Qué acaba de pasar exactamente? En lugar de eliminar nada, Git crea una nueva confirmación que revierte los cambios realizados en la que has seleccionado. Esta nueva confirmación se añade al principio de tu historial existente, lo que significa que la confirmación original permanece intacta y totalmente visible. No se reescribe ni se elimina nada; en su lugar, Git añade una capa que dice, en efecto, «Deshaz eso». Al mismo tiempo, los cambios en el archivo resultantes de esa inversión se aplican inmediatamente al directorio de trabajo. Verás que la corrección surte efecto inmediatamente, como cualquier otra confirmación.

Todo este proceso hace que git revert sea la forma más segura de corregir errores que ya se han enviado a una rama compartida. Todos los miembros del equipo pueden ver qué se ha cambiado, qué se ha revertido y por qué, sin confusión ni interrupciones en el trabajo en curso.

Comparación entre git revert y git reset

Aunque tanto git revert como git reset pueden utilizarse para deshacer confirmaciones, funcionan de manera fundamentalmente diferente. git reset es adecuado para correcciones locales y privadas. Te permite limpiar commits desordenados y restablecer tu directorio de trabajo exactamente como deseas. Pero hay una trampa: Si ya has enviado tu trabajo y luego has utilizado « git reset », puedes causar problemas a tus compañeros de equipo al alterar el historial de confirmaciones compartido.

Por otro lado, git revert está especialmente diseñado para sucursales compartidas o públicas. En lugar de borrar nada, crea una nueva confirmación que cancela los cambios de una anterior. Esto lo hace más seguro en proyectos compartidos.

Aquí tienes una comparación lado a lado para que lo veas más claro:

Característica

git revert

git reset

Acción

Añade una nueva confirmación que revierte una confirmación anterior.

Mueve el puntero de la rama y, opcionalmente, modifica los archivos.

Historial de confirmaciones

Conservado, sin eliminar nada.

Las confirmaciones reescritas se pueden perder.

Ideal para

Deshacer cambios en una rama pública/compartida

Limpiar las confirmaciones locales antes de enviar

Impacto en los demás

Seguro, sin interrupciones para los colaboradores

Risky puede causar conflictos si se comparte el historial.

Directorio de trabajo

Los cambios se aplican inmediatamente.

Puede restablecer los estados de los archivos (--soft, --mixed, --hard)

Escenario ideal

Revertir una confirmación incorrecta que ya se ha enviado

Reescribir el historial de confirmaciones en una rama de características local

Revertir múltiples confirmaciones

A veces, no se trata solo de un commit incorrecto, sino que es posible que tengas que deshacer toda una serie de ellos. Afortunadamente, Git te permite revertir varias confirmaciones con un solo comando utilizando un rango de confirmaciones.

La sintaxis es la siguiente:

git revert OLDEST_HASH^..NEWEST_HASH

Esto le indica a Git que comience justo antes de la confirmación más antigua (para eso sirve ^ ) y revierta cada confirmación hasta la más reciente, incluida esta. Por ejemplo:

git revert a1b2c3d^..d4e5f6g

Este comando generará confirmaciones de reversión separadas para cada una de las confirmaciones originales en ese rango.

Atención,: revertir varias confirmaciones a la vez a menudo puede provocar conflictos de fusión, especialmente si esas confirmaciones afectan a los mismos archivos o líneas. Git intentará revertir cada confirmación en secuencia, pero es posible que necesite tu ayuda para resolver los cambios superpuestos.

También puedes obtener más información sobre cómo Git gestiona las operaciones de reversión, incluidos casos más complejos comolas confirmaciones de fusión, en Git Revert Merge Commit: Guía con ejemplos.

Gestión de conflictos de fusión durante la reversión

Revertir puede parecer sencillo hasta que Git te lanza una bola curva: un conflicto de fusión. Estos suelen aparecer cuando:

  • Estás revirtiendo una confirmación que cambió las mismas líneas que otras confirmaciones recientes.
  • Estás revirtiendo una confirmación de fusión o un grupo de confirmaciones con cambios superpuestos.

Git hace todo lo posible por revertir los cambios de forma limpia, pero si hay ambigüedad, se detendrá y te pedirá ayuda.

A continuación te explicamos cómo hacerlo:

git revert HEAD

Y, para comprobar qué archivos están en conflicto, utiliza:

git status

Pararesolver manualmente los conflictos en tu editor de código, busca los marcadores <<<<<<<, ======= y >>>>>>>.

Aquí los marco como resueltos:

git add <resolved-file>

Ahora, continúo con la reversión:

git revert-- continue

Si cambias de opinión y deseas cancelar la reversión por completo:

git revert --abort

Este flujo te ofrece un control total. Puedes decidir si deseas continuar con la reversión o cancelarla por completo.

Si quieres entender cómo Git realiza un seguimiento de los registros de referencia durante operaciones como esta, consulta Git Reflog: Comprensión y uso de los registros de referencia para obtener consejos sobre cómo solucionar problemas con historiales desordenados.

Casos excepcionales: Revertir confirmaciones de fusión

Revertir una confirmación normal es sencillo, pero las confirmaciones de fusión son harina de otro cuerno. Esto se debe a que una confirmación de fusión tiene dos o más padres, y Git necesita saber qué ruta (o «línea principal») debe tratar como base.

Para revertir una confirmación de fusión, tendrás que utilizar la bandera -m de forma explícita.

git revert -m 1 <merge-commit-hash>

Esto es lo que hace la bandera « -m »:

  • -m significa «línea principal» y le indica a Git qué confirmación principal debe conservarse.

  • 1 Normalmente se refiere al primer padre, normalmente la rama en la que estabas cuando se produjo la fusión.

  • 2 Se refiere al segundo padre, a menudo la rama que se fusionó.

¿Cuándo usarías 1 o 2?

  • Utiliza « -m 1 » si deseas deshacer el efecto de los cambios fusionados, pero conservar el trabajo de la rama principal.

  • Utiliza « -m 2 » si deseas eliminar los cambios de la línea principal pero conservar la función o el contenido de la rama fusionada. Esto es poco habitual. Revertir una confirmación de fusión es propenso a generar conflictos y, a menudo, da lugar a un lío complejo, especialmente si las confirmaciones posteriores dependen de ella. Si no estás seguro, prueba primero a revertir en una rama de prueba.

Prácticas recomendadas al utilizar git revert

Para sacar el máximo partido a git revert y evitar los errores más comunes, ten en cuenta estas prácticas recomendadas:

  • Verifica los hash de las confirmaciones antes de revertir: Comprueba siempre tu historial de confirmaciones utilizando git log o git log-- oneline para asegurarte de que estás apuntando al cambio correcto. Puedes repasar estos comandos enn Fundamentos de Git o tener a mano lo esencial con nuestra hoja de referencia rápida de Git.

  • Personaliza tu mensaje de confirmación: No te conformes con el mensaje predeterminado «Revert» (Revertir) de Git. Añade contexto, como por qué has revertido la confirmación, para ayudar a los colaboradores (y a ti mismo en el futuro) a comprender el cambio.

  • Comunicar cuando se vuelve a una rama compartida: Si estás revirtiendo cambios en una rama pública, como main o develop, avisa primero a tu equipo. Las reversiones afectan a todos, y es mejor coordinarse. Obtén más información sobre los flujos de trabajo colaborativos en nuestros cursos Conceptos de GitHub y Conceptos intermedios de GitHub.

  • Evita revertir una reversión a menos que estés seguro: Revertir una reversión anterior puede recuperar cambios no deseados o provocar conflictos. Si necesitas volver a aplicar un cambio, considera utilizar git cherry-pick en lugar de.

  • Utiliza reflog para recuperar los datos si algo sale mal: ¿Cometiste un error al revertir? Utiliza git reflog para ver tus acciones recientes y recuperar estados perdidos de .

Conclusión

Si colaboras en un entorno profesional, git revert a la última confirmación utilizando git revert HEAD ayuda a mantener la transparencia y reduce el riesgo de pérdida accidental de datos. Ya sea que estés limpiando un error o revirtiendo un fallo, revert mantiene tu repositorio estable y comprensible para todos los involucrados.

Aprende hoy los fundamentos de Git

Para principiantes: Control de versiones maestro mediante Git.
Empieza a aprender gratis

Oluseye Jeremiah's photo
Author
Oluseye Jeremiah
LinkedIn

Redactor técnico especializado en IA, ML y ciencia de datos, que hace que las ideas complejas sean claras y accesibles.

Temas

Aprende Git con DataCamp

Programa

Fundamentos de GitHub

0 min
Prepárate para la Certificación de Fundamentos de GitHub aprendiendo los fundamentos de Git y GitHub: control de versiones, colaboración y ramificación.
Ver detallesRight Arrow
Comienza el curso
Ver másRight Arrow
Relacionado

Tutorial

Tutorial de Git Revert y Git Reset para principiantes

Una guía tutorial para principiantes que muestra cómo utilizar los comandos Git Revert y Reset.
Zoumana Keita 's photo

Zoumana Keita

Tutorial

Git rename branch: Cómo cambiar el nombre de una rama local o remota

Aprende a renombrar ramas Git locales y remotas utilizando el terminal o la interfaz gráfica de usuario (GUI) de clientes populares como GitHub.

Tutorial

Tutorial de GitHub y Git para principiantes

Un tutorial para principiantes que muestra cómo funciona el control de versiones Git y por qué es crucial para los proyectos de ciencia de datos.
Abid Ali Awan's photo

Abid Ali Awan

Tutorial

Git Prune: Qué es la poda Git y cómo usarla

La poda Git es un comando Git que elimina del repositorio los objetos que ya no son accesibles desde ninguna confirmación o rama, ayudando a liberar espacio en disco.

Tutorial

Git pull force: Cómo sobrescribir una rama local con una remota

Aprende por qué git pull --force no es la mejor forma de sobrescribir una rama local con la versión remota, y descubre el método adecuado utilizando git fetch y git reset.

Tutorial

Tutorial de GIT Push y Pull

Aprende a realizar solicitudes de Git PUSH y PULL con GitHub Desktop y la línea de comandos.

Olivia Smith

Ver másVer más