git help restore says: 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. However, this doesn't seem to work as advertised: $ mkdir foo; cd foo; git init $ touch a b; git add a b && git commit -m "Initial commit" $ echo "Foo" > a; echo "Bar" > b $ git add a $ git status --short M a M b $ git restore --staged --worktree . $ git status --short M a I'm not sure whether I expect 'a' to be empty at the end of this sequence, but I definitely expect it not to contain staged changes.