Move (or "Undo") last git commit to unstaged area

git

Solution

You can use `git reset` to set the current branch to the preceding commit, i.e. `HEAD^`

git reset HEAD^

Adding `--soft` will keep those files in the index: (ready to be committed)

git reset --soft HEAD^

`--soft`

(…) This leaves all your changed files "Changes to be committed", as git status would put it.

Problem

What's the best way to move your last git commit back into the "Changes not staged" + "Untracked files" areas (with the commit in question being not-pushed / only in your local repo, effectively removing it from HEAD)? In other words, how do you roll back a commit, but automatically apply that diff to your unstaged area?

Original source

Related problems