Menu
Coddy logo textTech

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.

git reset --hard retrocede HEAD y descarta todo lo posterior - incluidos el área de preparación y el árbol de trabajo.

Sintaxis

CommandWhat it does
git reset --hardDescarta todos los cambios sin confirmar (permanece en HEAD)
git reset --hard HEAD~1Elimina el último commit y sus cambios
git reset --hard <hash>Fuerza la rama de vuelta a un commit específico
git reset --hard origin/mainHace 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.

StepCommandResult
1git reflogLista dónde ha estado HEAD, con sus hashes
2git reset --hard <hash>Vuelve al commit anterior al reset

Preguntas frecuentes sobre git reset --hard

¿Qué hace realmente git reset --hard?
Mueve tu rama actual al commit objetivo y sobrescribe tanto el área de preparación como tu árbol de trabajo para coincidir con él. Cualquier cambio sin confirmar - preparado o no - se descarta. Comparado con --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?
Ejecuta 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?
Ejecuta 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?
El trabajo confirmado normalmente sí: ejecuta 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?
Sí. Abre el terminal playground para ejecutar 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.
Coddy programming languages illustration

Aprende Git con Coddy

COMENZAR