Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Solved: Git Won't Check Out a Path It Autocompleted

DZone's Guide to

Solved: Git Won't Check Out a Path It Autocompleted

Strange Git behavior when checking out on remote repos, solved.

· DevOps Zone ·
Free Resource

Is the concept of adopting a continuous everything model a daunting task for your fast moving business? Read this whitepaper to break down and understand one of the key pillars of this model in Continuous Governance: The Guardrails for Continuous Everything.

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!

Are you looking for greater insight into your software development value stream? Check out this whitepaper: DevOps Performance: The Importance of Measuring Throughput and Stability to see how CloudBees DevOptics can give you the visibility to improve your continuous delivery process.

Topics:
git ,source control

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}