Tema 14 · Recuperación

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:

deshacer-cambios.sh
Solo lectura
# 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.