Restore a file without adding to the index using Git

After fetching a list of deleted files with --git-diff-filter I wanted to restore the files to my current working directory.

Historically I have used git checkout <committish> </path/to/file> to achieve this, but it had the unwanted side effect of adding the file to the index automatically, requiring a call to git reset </path/to/file> to unstage it.

Searching for a better option, I discovered that the recently added git restore command has a way to restore files too.

The command can also be used to restore the content in the index with —staged, or restore both the working tree and the index with —staged —worktree.

Splitting the behaviour in to --staged and --worktree allows us to restore files without adding them to the index by calling git restore with the --worktree flag only.

git restore --source <committish> --worktree </path/to/file>

This will restore the file to the working directory without adding the file to the index.