How to Discard Changes in Git
No matter how experienced you are as a programmer, not all of your code will always work at the first try. Luckily, Git allows you to discard and undo any of your changes, providing a safety net for your work.
In this short article, we'll look at some of the many ways how you can discard changes in Git.
The Git Cheat Sheet
No need to remember all those commands and parameters: get our popular "Git Cheat Sheet" - for free!
Discarding Local Changes in a File
Changes that haven't been committed to the local repository are called "local" changes in Git. They exist in your Working Copy, but you haven't wrapped them in a commit, yet.
If you want to discard this type of changes, you can use the git restore
command:
git restore index.html
This will undo all uncommitted local changes in the specified file. Please be careful because you cannot get these changes back once you've discarded them!
In case you are using the Tower Git client, you can discard local changes in a file simply from its contextual menu - or even discard only parts of your changes, while keeping the rest:
Although it's not possible in Git, Tower allows you to undo any wrongfully discarded changes with a simple shortcut: CMD+Z (or CTRL+Z on Windows)!
Discarding All Local Changes
If you want to undo all of your current changes, you can use the git restore
command with the "." parameter (instead of specifying a file path):
$ git restore .
If, additionally, you have untracked (= new) files in your Working Copy and want to get rid of those, too, then the git clean
command is your friend:
$ git clean -f
Again: please be careful with these commands! Once you've discarded your local changes, you won't be able to get them back!
Saving Changes on the Stash
Sometimes, you won't be 100% sure if you really don't need your local changes anymore. That's when - instead of discarding them - you can choose to save them temporarily:
$ git stash --include-untracked
Running this command will result in a clean Working Copy, but the changes are saved on Git's "Stash" so you can restore them at a later point if you need them:
$ git stash pop
The "pop" option will reapply the last saved state and, at the same time, delete and clean it from the Stash.
In case you are using the Tower Git client, saving to and restoring from the Stash can be performed right from the toolbar:
Learn More
- More frequently asked questions about Git & version control