I got some commits in my repository:
like:
A - Added Feature A
B - Removed Feature B
C - Redesigned Feature C
D - Added Feature D
E - Added Feature
git reabse -i HEAD~3
you will have the list of your 3 last commit messages
C - Redesigned Feature C
D - Added Feature D
E - Added Feature D
you just insert x git reset HEAD^ before the commit you want to undo, you want to undo commit C, so it will be like this
C - Redesigned Feature C
x git reset HEAD^
D - Added Feature D
E - Added Feature D
exit rebase console, you will see that your commit is no more in the log and their files are staged.
By far the best solution is to use git revert. This will make a new commit that undoes the changes in a specific SHA. This is a very safe way to remove a commit, and can be easily merge with other or remote branches.
How to use Git Revert
git revert <insert bad commit hash here>