### Undo the last local commit ```bash git reset --soft HEAD^ ``` ### Undo last commit, preserving local changes ```bash git reset --soft HEAD~1 ``` ### Undo last commit, without preserving local changes ```bash git reset --hard HEAD~1 ``` ### Undo last commit, preserving local changes in index ```bash git reset --mixed HEAD~1 # or git reset HEAD~1 ``` ### Undo non-pushed commits ```bash git reset origin/master ``` ### Reset to remote state ```bash git fetch origin git reset --hard origin/master ``` ### Squashing commits together using reset --soft ```bash git reset --soft HEAD~ git commit ``` ### Mix HEAD with a give SHA ```bash git reset --mixed ``` ### Upstream master ```bash git reset HEAD origin/master -- ``` ### The version from the most recent commit ```bash git reset HEAD -- ``` ### The version before the most recent commit ```bash git reset HEAD^ -- ``` ### Move head to specific commit ```bash git reset --hard ``` ### Reset staging area, working directory to most recent commit ```bash git reset --hard # or git reset --hard HEAD~1 ``` ### Reset, but preserve local changes ```bash git reset --soft HEAD~1 ``` ### Undo last pull ```bash git reflog de62e8e (HEAD -> main, origin/main) HEAD@{0}: pull origin main: Fast-forward 3ae1875 HEAD@{1}: commit: Bake crackers 00684df HEAD@{2}: commit: Melt stilton ... git reset --keep 3ae1875 ```