Repaso
English
Maven, Git y SDLCAvanzadoVCS-19

Ejecutaste git reset --hard por error y "perdiste" commits. ¿Qué puede salvarte?

Opciones

  1. Nada; los commits se pierden para siempre tras un reset
  2. git reflog muestra dónde estaba HEAD, así que puedes restaurarlo (Opción correcta)
  3. Reinstalar Git en la máquina en la que trabajas
  4. Eliminar la carpeta .git y clonar el repo otra vez

Respuesta

git reflog muestra a dónde apuntaba HEAD, así que puedes encontrar el hash del commit y restaurarlo con git reset o git checkout

Por qué

Git rara vez elimina commits de inmediato. git reflog es un log local de cada posición en la que ha estado HEAD (commits, resets, checkouts, rebases).

Busca el hash de antes del error (HEAD@{3}) y restáuralo: git reset --hard <hash> o crea una rama ahí: git branch rescue <hash>.

Los commits sin referencias se conservan unos 30 a 90 días antes del garbage collection. Sin embargo, los cambios sin commit perdidos con un hard reset no se pueden recuperar así.

git reflog
git branch rescue HEAD@{2}

Recuerda

reflog = el historial de deshacer de HEAD en Git.

Términos clave

Practica esta pregunta en Repaso