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