How to cancel a local git commit

Amal Kumar S picture Amal Kumar S · Jan 31, 2011 · Viewed 835.4k times · Source

My issue is I have changed a file eg: README, added a new line 'this for my testing line' and saved the file, then I issued the following commands

 git status

 # On branch master
 # Changed but not updated:
 #   (use "git add <file>..." to update what will be committed)
 #   (use "git checkout -- <file>..." to discard changes in working directory)
 #
 #  modified:   README
 #
 no changes added to commit (use "git add" and/or "git commit -a")


 git add README

 git commit -a -m 'To add new line to readme'

I didn't push the code to github, Now I want to cancel this commit.

For this I used

   git reset --hard HEAD~1

But I lost the newly added line 'this for my testing line' from the README file. This should not happen. I need the content to be there. Is there a way to retain the content and cancel my local commit?

Answer

Koraktor picture Koraktor · Jan 31, 2011

Just use git reset without the --hard flag:

git reset HEAD~1

PS: On Unix based systems you can use HEAD^ which is equal to HEAD~1. On Windows HEAD^ will not work because ^ signals a line continuation. So your command prompt will just ask you More?.