How do I discard changes in my working copy that are not in the index?
For all unstaged files in current working directory use:
git restore .
For a specific file use:
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.
If a file has both staged and unstaged changes, only the unstaged changes shown in
git diff are reverted. Changes shown in
git diff --staged stay intact.
Before Git 2.23
For all unstaged files in current working directory:
git checkout -- .
For a specific file:
git checkout -- path/to/file/to/revert
-- here to remove ambiguity (this is known as argument disambiguation).