<p>How do I discard changes in my working copy that are not in the index?</p>

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
).