Método REVERSIBLE para descartar todos los cambios:
He encontrado esta pregunta después de después de hacer una fusión y olvidar a la caja de desarrollar inmediatamente después. Lo adivinó: comencé a modificar algunos archivos directamente en el maestro . ¡Oh! Como mi situación no es única (todos lo hemos hecho, ¿no? ->), ofreceré una forma reversible que solía descartar todos los cambios para que el maestro parezca desarrollarse nuevamente.
Después de hacer una git diff
para ver qué archivos se modificaron y evaluar el alcance de mi error, ejecuté:
git stash
git stash clear
Después de guardar primero todos los cambios, luego se borraron. Todos los cambios realizados en los archivos por error en el maestro desaparecieron y se restauró la paridad.
Digamos que ahora quería restaurar esos cambios. Puedo hacer esto. El primer paso es encontrar el hash del alijo que acabo de borrar / soltar:
git fsck --no-reflog | awk '/dangling commit/ {print $3}'
Después de aprender el hash, restauré con éxito los cambios no confirmados con:
git stash apply hash-of-cleared-stash
Realmente no quería restaurar esos cambios, solo quería validar que podía recuperarlos, así que los borré de nuevo.
Otra opción es aplicar el alijo a una rama diferente , en lugar de borrar los cambios. Entonces, en términos de eliminar los cambios realizados al trabajar en la rama incorrecta, stash
le brinda mucha flexibilidad para recuperarse de su boo-boo.
De todos modos, si desea un medio reversible de borrar los cambios en una sucursal, lo anterior es una forma menos peligrosa en este caso de uso.
git reset --hard HEAD^