Move HEAD back one commit and discard index and working tree changes.
Section: Reset Basics
Discard last commit and local changes
bash
bash
git reset --hard HEAD~1Explanation
Very destructive locally. Use only when you are sure you want to discard the changes.
Learn the surrounding workflow
Compare similar commands or jump into common fixes when this command is part of a bigger troubleshooting path.
Related commands
Same sheet · prioritizing Reset Basics
Undo last commit but keep everything staged
Move HEAD back one commit while preserving index and working tree.
Undo last commit and unstage changes
Move HEAD back one commit and leave changes in the working tree.
Unstage a single file
Remove a path from the index without changing its contents in the working tree.
Reset out of a conflicted merge state
Try to leave local changes intact while backing out of a merge-like operation.
Mental model for reset vs restore vs revert
Quick decision guide for the three similarly named commands.
Use reflog after a mistaken reset
Find the previous branch tip after a bad reset.