Deshacer Cambios con Seguridad: restore, revert y reset
Aprende a corregir errores en Git sin pánico: descartar cambios locales con git restore, revertir commits compartidos de forma segura con git revert y comprender cuándo y cómo usar git reset.
La Caja de Herramientas para Deshacer Cambios
Todos los desarrolladores cometen errores: borrar una función por accidente, incluir un archivo que no correspondía o descubrir que el último commit rompió el sistema. Git tiene tres comandos específicos dependiendo de en qué estado se encuentra el error.
Comparativa: restore vs. revert vs. reset
| Comando | ¿Qué hace? | ¿Es seguro para ramas públicas? | Escenario Ideal |
|---|---|---|---|
| git restore | Descarta cambios en archivos antes de hacer commit. | 100% Seguro. Solo afecta tus archivos locales sin confirmar. | Modificaste un archivo para probar algo, no te gustó y quieres dejarlo tal cual estaba en el último commit. |
| git revert | Crea un nuevo commit que aplica exactamente los cambios inversos a un commit anterior. | 100% Seguro. No destruye el historial, añade una nueva entrada correctiva. | El commit ya fue subido a GitHub (rama compartida) y necesitas anularlo sin alterar el pasado de tus compañeros. |
| git reset | Mueve el puntero de la rama hacia atrás en el tiempo, borrando commits del historial. | Peligroso en ramas compartidas. Solo debe usarse en ramas locales privadas. | Hiciste 1 o 2 commits locales que quieres rehacer antes de enviarlos a GitHub. |
Los Modos de git reset (--soft vs --hard)
-
git reset --soft HEAD~1: Deshace el último commit, pero mantiene todos tus cambios en el Staging Area (preparados). Ideal si solo querías cambiar el mensaje o agregar un archivo que olvidaste. -
git reset --mixed HEAD~1(Por defecto): Deshace el commit y saca los cambios del Staging, pero los deja intactos en tus archivos físicos para que los revises. -
git reset --hard HEAD~1: ¡Borrón y cuenta nueva! Deshace el commit y destruye físicamente cualquier cambio en tus archivos. El proyecto vuelve con total fidelidad al commit anterior.
⚡ Comandos de Rescate en la Práctica
Ejemplos para descartar cambios, anular commits y restaurar versiones previas:
# 1. Descartar los cambios de un archivo modificado que aún no has preparado:
git restore app/views/home.php
# 2. Descartar TODOS los cambios no preparados en todo el proyecto:
git restore .
# 3. Sacar un archivo del Staging Area (des-preparar):
git restore --staged config/database.php
# 4. Deshacer un commit público de forma segura (creando un commit inverso):
git revert a1b2c3d -m "revert: revertir integración errónea de pasarela"
# 5. Deshacer el último commit local manteniendo tus archivos intactos:
git reset --soft HEAD~1
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.🚀 ¿Quieres dominar Manual Completo de Git & GitHub Profesional y crear proyectos reales?
Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.
🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.