Git Won’t Check Out A Path It Autocompleted

One of my git repositories has developed a tendency to refuse to checkout a feature branch locally that exists on the remote repo. My git bash completion works, but then strange things happen! It turned out to be that I had two remotes with the same refspec, so I thought I’d write down the behaviour I saw and hopefully help someone else to fix this problem faster if they see it.

It started with not being able to check out a branch. I would see that my colleague had created feature/cute-labels and usually I can just check out the branch name and git makes a local branch from the remote one and sets it up to track, which is what I expected. But this time, even though the branch name autocompleted:


$ git checkout feature/cute-labels
error: pathspec 'feature/cute-labels' did not match any file(s) known to git.

Weird.

So next I tried to create a branch and set what it tracked:


$ git checkout -b feature/cute-labels
Switched to a new branch 'feature/cute-labels'

$ git branch -u origin/feature/cute-labels
error: Not tracking: ambiguous information for ref refs/remotes/origin/feature/cute-labels

Ambiguous information … interesting. I looked in .git/config and sure enough I had two remotes which both had the same fetch line:


fetch = +refs/heads/*:refs/remotes/origin/*

We had a problem with our jump host one day and I'd added the https version of the repo as a separate remote but with the same pathspec. Since git didn't know which remote I meant (and can't tell that they are the same thing), it didn't know what to do. This was a weird little problem that's been irritating me for probably a few weeks, so I was glad to understand it and be able to sort it out!

One thought on “Git Won’t Check Out A Path It Autocompleted

  1. Thank you for this! I’ve been having the same error pop up the past month and it’s been driving me nuts.
    All fixed now :)

Leave a Reply

Please use [code] and [/code] around any source code you wish to share.

This site uses Akismet to reduce spam. Learn how your comment data is processed.