On Tue, Apr 28, 2020 at 5:16 AM Harri Mehtälä <harri.mehtala@xxxxxxxxxx> wrote: > I am trying to do git restore --staged --worktree for a file. I > understood from the documentation that you can do both. > > "Specify the restore location. If neither option is specified, by > default the working tree is restored. Specifying --staged will only > restore the index. Specifying both restores both." > > $ git restore --staged --worktree pom.xml > $ git status > Changes to be committed: > modified: pom.xml > > It looks like currently I have to do both separately. If you read a bit further in the documentation, it says that you must specify --source when combining --staged and --worktree, so your "git restore" invocation is incorrect. Unfortunately, "git restore" is a bit buggy in this regard since it blindly accepts this invalid combination of options when it should instead error out. I submitted a patch series[1] which fixes this shortcoming. Having to specify --source in this case can be cumbersome if you just want to restore from HEAD (a reasonable default), so the submitted patch series[1] also makes --source default to HEAD when --staged and --worktree are combined. [1]: https://lore.kernel.org/git/20200501082746.23943-1-sunshine@xxxxxxxxxxxxxx/T/