threads / discuss / 50870

fatal: ... is already checked out at ...

Subject: fatal: ... is already checked out at ...

## tl;dr

2 messages between Apr 3, 2019 and Apr 4, 2019.

replies: 1people: 2as markdown or json

Mark Kharitonov· Apr 3, 2019, 22:15 UTC · lore

Hi, Please, observe:

C:\Dayforce\56 [release/r-856 ≡]> git --version git version 2.18.0.windows.1 C:\Dayforce\56 [release/r-856 ≡]> git worktree list C:/Dayforce/tip c80539e06d [arch/shelve/532684] C:/Dayforce/55 1362776f49 [release/r-855] C:/Dayforce/55WFM 0000000000 [wfm/855wfm] C:/Dayforce/56 f9c36d3a2b [release/r-856] C:/Dayforce/56 f9c36d3a2b [release/r-856] C:/Dayforce/hf56 5f1837a3f6 [hotfix/856]

Item #1 - how come I have two instances of release/r-856 in the git worktree list output? Next:

C:\Dayforce\56 [release/r-856 ≡]> git co onboarding/r-856/james-config Checking out files: 100% (2055/2055), done. Switched to branch 'onboarding/r-856/james-config' Your branch is up to date with 'origin/onboarding/r-856/james-config'. C:\Dayforce\56 [onboarding/r-856/james-config ≡]> git co release/r-856 fatal: 'release/r-856' is already checked out at 'C:/Dayforce/56'

Item #2 - why cannot I checkout release/r-856, if I am already in the right working tree? I suppose it is connected to item #1 Next:

C:\Dayforce\56 [onboarding/r-856/james-config ≡]> git co -B release/r-856 $(git rev-parse release/r-856) Checking out files: 100% (2055/2055), done. Switched to and reset branch 'release/r-856' Your branch is up to date with 'origin/release/r-856'. C:\Dayforce\56 [release/r-856 ≡]>

This is how I forced the checkout.

Does not seem right. Is it a git bug or is it something we are doing wrong? Thank you.

-- 
Be well and prosper.
==============================
"There are two kinds of people.Those whose guns are loaded and those who dig."
   ("The good, the bad and the ugly")
So let us drink for our guns always be loaded.
Eric Sunshine· Apr 4, 2019, 08:30 UTC · re: Mark Kharitonov · lore

Re: fatal: ... is already checked out at ...

On Wed, Apr 3, 2019 at 6:15 PM Mark Kharitonov <mark.kharitonov@gmail.com> wrote:

Show 18 quoted lines
> C:\Dayforce\56 [release/r-856 ≡]> git --version
> git version 2.18.0.windows.1
> C:\Dayforce\56 [release/r-856 ≡]> git worktree list
> [...]
> C:/Dayforce/56     f9c36d3a2b [release/r-856]
> C:/Dayforce/56     f9c36d3a2b [release/r-856]
>
> Item #1 - how come I have two instances of release/r-856 in the git
> worktree list output?
>
> C:\Dayforce\56 [release/r-856 ≡]> git co onboarding/r-856/james-config
> Switched to branch 'onboarding/r-856/james-config'
> Your branch is up to date with 'origin/onboarding/r-856/james-config'.
> C:\Dayforce\56 [onboarding/r-856/james-config ≡]> git co release/r-856
> fatal: 'release/r-856' is already checked out at 'C:/Dayforce/56'
>
> Item #2 - why cannot I checkout release/r-856, if I am already in the
> right working tree? I suppose it is connected to item #1

You probably hit the bug reported in [1], which was fixed by [2] which made it into Git 2.20.0. Specifically, prior to 2.20.0, you could get invalid duplicate worktree entries like this:

    $ git worktree add foo bar
    $ rm -rf foo
    $ git worktree add foo bar
    $ git worktree list
    ...
    foo  deadbeef [bar]
    foo  deadbeef [bar]

If you don't have any changes in C:/Dayforce/56, an easy way to recover from the situation is to blast the directory, prune the worktree list, and re-create:

    $ rm -rf C:/Dayforce/56
    $ git worktree prune -v
    $ git worktree list # just to verify that duplicate entries are gone
    $ git worktree add C:/Dayforce/56 release/r-856

[1]: https://public-inbox.org/git/20180821193556.GA859@sigill.intra.peff.net/ [2]: https://public-inbox.org/git/20180828212026.21989-6-sunshine@sunshineco.com/

← back to recent threads