Sometimes we need to undo our last commit but we don't want to lose the changes we've already made. There are several reasons, sometimes we made a commit prematurely or we forgot to add a file, etc.
WARNING: These commands assume we haven't sync/publish the changes to a remote origin.
git reset
: What it actually does is that moves the actual branch to X
commit,
so, using HEAD~1
or "HEAD^"
(both are valid) we move the actual branch to the previous commit, example:
git reset
\$git reset HEAD~1
If we included --soft
as parameter it will mark the files (actual changes) ready to commit
Using soft
\$git reset --soft HEAD~1
Ok then, as simple as that, but sometimes we require to clean up a little and reflect that on the commit message in that case use git commit --amend
(Notice that this will open our configured editor to change the message), example:
Use amend
$git rm private.key
$git commit --amend
Use case, You committed your code twice but noticed there is an error in the author
Fix the author
$git reset HEAD~1
$git commit --amend --author="Jorge Anaya "
$git add .
$git commit -m "Fix bla bla bla"