# Bug: git restore --staged --worktree not working in git version 2.26.2.windows.1

2 messages from 2020-04-28 to 2020-05-01. Participants: Harri Mehtälä, Eric Sunshine.
Thread: https://gitlist.dev/t/53340

## Harri Mehtälä, 2020-04-28 09:01

Subject: Bug: git restore --staged --worktree not working in git version 2.26.2.windows.1
Message-ID: <AM6PR09MB298072F9FEB469130EAEB8F18BAC0@AM6PR09MB2980.eurprd09.prod.outlook.com>
URL: https://gitlist.dev/e/AM6PR09MB298072F9FEB469130EAEB8F18BAC0%40AM6PR09MB2980.eurprd09.prod.outlook.com

```
Hello

In git version 2.26.2.windows.1

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 status 
On branch ...
Your branch is up to date with ...

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   pom.xml

$ git restore --staged --worktree pom.xml

$ git status
On branch ...
Your branch is up to date with ...

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   pom.xml
______________________

It looks like currently I have to do both separately. 

- Harri Mehtälä

```

## Eric Sunshine, 2020-05-01 08:42

Subject: Re: Bug: git restore --staged --worktree not working in git version 2.26.2.windows.1
Message-ID: <CAPig+cTqqHqM6i8JHTLoY8SyCu=WWh1KCH2HCj8VNNxvux-toQ@mail.gmail.com>
URL: https://gitlist.dev/e/CAPig%2BcTqqHqM6i8JHTLoY8SyCu%3DWWh1KCH2HCj8VNNxvux-toQ%40mail.gmail.com
In-Reply-To: <AM6PR09MB298072F9FEB469130EAEB8F18BAC0@AM6PR09MB2980.eurprd09.prod.outlook.com>

```
On Tue, Apr 28, 2020 at 5:16 AM Harri Mehtälä <harri.mehtala@finago.com> 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@sunshineco.com/T/

```
