how to undo commit

C++
# KEEP CHANGES
git reset --soft HEAD~1

# REMOVE CHANGES
git reset --hard HEAD~1$ git reset --soft HEAD~1
git reset --soft HEAD~1$ git reset --soft HEAD~1$ git commit -m "some comment"                
$ git reset HEAD~                                          
<< edit files as necessary >>                              
$ git add ...                                              
$ git commit -c ORIG_HEADgit reset <commitId>
# Exemple
git reset 5310517
Source

Also in C++: