Git Reset --hard
Última actualización
git reset --hard mueve tu rama a un commit objetivo y fuerza tanto el área de preparación como tu árbol de trabajo a coincidir exactamente con él, descartando por el camino todo cambio sin confirmar. Es la forma más destructiva de git reset, así que asegúrate de que no necesitas tu trabajo actual antes de ejecutarlo.
¿Descartaste un commit por error? Un hard reset suele ser recuperable con git reflog. Prueba esto de forma segura en el terminal playground: una shell real en tu navegador.
Sintaxis
| Command | What it does |
|---|---|
git reset --hard | Descarta todos los cambios sin confirmar (permanece en HEAD) |
git reset --hard HEAD~1 | Elimina el último commit y sus cambios |
git reset --hard <hash> | Fuerza la rama de vuelta a un commit específico |
git reset --hard origin/main | Hace que la rama local coincida exactamente con el remoto |
Recuperar un hard reset
El trabajo confirmado que descartaste con el reset suele seguir siendo recuperable.
| Step | Command | Result |
|---|---|---|
| 1 | git reflog | Lista dónde ha estado HEAD, con sus hashes |
| 2 | git reset --hard <hash> | Vuelve al commit anterior al reset |
Preguntas frecuentes sobre git reset --hard
¿Qué hace realmente git reset --hard?
--soft (que mantiene los cambios preparados) y --mixed (que los mantiene sin preparar), --hard es el único modo que descarta los cambios.¿Cómo descarto todos mis cambios locales?
git reset --hard sin ningún commit para restablecer el árbol de trabajo al último commit, borrando las ediciones sin confirmar. Para eliminar también los archivos sin seguimiento que reset no toca, sigue con git clean -fd.¿Cómo restablezco mi rama para que coincida con el remoto?
git fetch y luego git reset --hard origin/main (sustituye por tu rama). Esto fuerza a tu rama local a coincidir exactamente con el remoto, descartando los commits y cambios locales que difieran de él - útil cuando tu rama local se ha estropeado y solo quieres la versión del remoto.¿Puedo deshacer un git reset --hard?
git reflog para encontrar el commit al que apuntaba tu rama antes del reset y luego git reset --hard <hash> para volver a él. Los cambios que nunca se confirmaron (solo en tu árbol de trabajo) no se pueden recuperar, así que trata --hard con cuidado.¿Puedo practicar esto en línea?
git reset --hard en una shell real en tu navegador, sin nada que instalar. El curso interactivo y gratuito de Git de Coddy también cubre el restablecimiento y la anulación de cambios paso a paso.