version control - How do I discard unstaged changes in Git?

ID : 45

viewed : 241

Tags : gitversion-controlgit

Top 5 Answer for version control - How do I discard unstaged changes in Git?

vote vote

97

For all unstaged files in current working directory use:

git checkout -- . 

For a specific file use:

git checkout -- path/to/file/to/revert 

-- here to remove ambiguity (this is known as argument disambiguation).

For Git 2.23 onwards, one may want to use the more specific

git restore . 

resp.

git restore path/to/file/to/revert 

that together with git switch replaces the overloaded git checkout (see here), and thus removes the argument disambiguation.

vote vote

86

Another quicker way is:

git stash save --keep-index --include-untracked 

You don't need to include --include-untracked if you don't want to be thorough about it.

After that, you can drop that stash with a git stash drop command if you like.

vote vote

74

It seems like the complete solution is:

git clean -df git checkout -- . 

git clean removes all untracked files (warning: while it won't delete ignored files mentioned directly in .gitignore, it may delete ignored files residing in folders) and git checkout clears all unstaged changes.

vote vote

69

This checks out the current index for the current directory, throwing away all changes in files from the current directory downwards.

git checkout . 

or this which checks out all files from the index, overwriting working tree files.

git checkout-index -a -f 
vote vote

55

git clean -df 

Cleans the working tree by recursively removing files that are not under version control, starting from the current directory.

-d: Remove untracked directories in addition to untracked files

-f: Force (might be not necessary depending on clean.requireForce setting)

Run git help clean to see the manual

Top 3 video Explaining version control - How do I discard unstaged changes in Git?

Related QUESTION?