threads / discuss / 57039

Checkout previous branch command not working on ​2.34.1.400

Subject: Checkout previous branch command not working on ​2.34.1.400

## tl;dr

3 messages between Dec 6, 2021 and Dec 6, 2021.

replies: 2people: 2as markdown or json

Will Beason· Dec 6, 2021, 16:52 UTC · lore

Thank you for filling out a Git bug report! Please answer the following questions to help us understand your issue.

What did you do before the bug happened? (Steps to reproduce your issue)
I typed "git checkout -"
What did you expect to happen? (Expected behavior)
I expected the previous branch to be checked out
What happened instead? (Actual behavior)
error: pathspec '-' did not match any file(s) known to git
What's different between what you expected and what actually happened?

I expected the previously-working behavior of switching to previous branch to work, but it didn't.

Anything else you want to add:

Please review the rest of the bug report below. You can delete any lines you don't wish to share.

[System Info] git version: git version 2.34.1.400.ga245620fadb-goog cpu: x86_64 no commit associated with this build sizeof-long: 8 sizeof-size_t: 8 shell-path: /bin/sh uname: Linux 5.10.46-5rodete1-amd64 #1 SMP Debian 5.10.46-5rodete1 (2021-09-28) x86_64 compiler info: gnuc: 10.3 libc info: glibc: 2.32 $SHELL (typically, interactive shell): /bin/bash

[Enabled Hooks] commit-msg post-checkout post-commit post-merge pre-commit pre-push prepare-commit-msg

- Will Beason
Eric Sunshine· Dec 6, 2021, 17:17 UTC · re: Will Beason · lore

Re: Checkout previous branch command not working on ​2.34.1.400

On Mon, Dec 6, 2021 at 12:04 PM Will Beason <willbeason@google.com> wrote:
Show 5 quoted lines
> I typed "git checkout -"
> error: pathspec '-' did not match any file(s) known to git
>
> I expected the previously-working behavior of switching to previous branch to
> work, but it didn't.

If I recall correctly, for `-` to work it consults the reflog, but if the reflog has been cleared or expired, it won't be able to determine the previous branch. For instance, try this:

    % git init foo
    % cd foo
    % echo data >data
    % git add data
    % git commit -m data
    % git checkout -b other
    % git checkout -
    % git reflog expire --expire=now --all
    % git checkout -
    error: pathspec '-' did not match any file(s) known to git

So, this is probably expected behavior, though the error message isn't very helpful and perhaps could be improved.

Will Beason· Dec 6, 2021, 17:36 UTC · re: Eric Sunshine · lore

Re: Checkout previous branch command not working on ​2.34.1.400

I'm going to bet you're absolutely correct. Yeah, the error message could be clearer.

After using "git checkout [branch]" for a while, I reflexively typed "git checkout -" and it worked again.

- Will Beason
On Mon, Dec 6, 2021 at 11:17 AM Eric Sunshine <sunshine@sunshineco.com> wrote:
Show 25 quoted lines
>
> On Mon, Dec 6, 2021 at 12:04 PM Will Beason <willbeason@google.com> wrote:
> > I typed "git checkout -"
> > error: pathspec '-' did not match any file(s) known to git
> >
> > I expected the previously-working behavior of switching to previous branch to
> > work, but it didn't.
>
> If I recall correctly, for `-` to work it consults the reflog, but if
> the reflog has been cleared or expired, it won't be able to determine
> the previous branch. For instance, try this:
>
>     % git init foo
>     % cd foo
>     % echo data >data
>     % git add data
>     % git commit -m data
>     % git checkout -b other
>     % git checkout -
>     % git reflog expire --expire=now --all
>     % git checkout -
>     error: pathspec '-' did not match any file(s) known to git
>
> So, this is probably expected behavior, though the error message isn't
> very helpful and perhaps could be improved.

← back to recent threads