Git checkout: updating paths is incompatible with switching branches

GitGit CheckoutRemote Branch

Git Problem Overview


My problem is related to Fatal Git error when switching branch.

I try to fetch a remote branch with the command

git checkout -b local-name origin/remote-name

but I get this error message:

> fatal: git checkout: updating paths is incompatible with switching branches.
> Did you intend to checkout 'origin/remote-name' which can not be resolved as commit?

If I manually create a branch and then pull the remote branch, it works, just as making a new clone and checking the branch out.

Why does it not work on the repository I work with?

Git Solutions


Solution 1 - Git

I believe this occurs when you are trying to checkout a remote branch that your local git repo is not aware of yet. Try:

git remote show origin

If the remote branch you want to checkout is under "New remote branches" and not "Tracked remote branches" then you need to fetch them first:

git remote update
git fetch

Now it should work:

git checkout -b local-name origin/remote-name

Solution 2 - Git

Alternate syntax,

git fetch origin remote_branch_name:local_branch_name

Solution 3 - Git

After having tried most of what I could read in this thread without success, I stumbled across this one: https://stackoverflow.com/questions/12319968/remote-branch-not-showing-up-in-git-branch-r/12320930#12320930

It turned out that my .git/config file was incorrect. After doing a simple fix all branches showed up.

Going from

[remote "origin"]
	url = http://stash.server.com/scm/EX/project.git
	fetch = +refs/heads/master:refs/remotes/origin/master

to

[remote "origin"]
	url = http://stash.server.com/scm/EX/project.git
	fetch = +refs/heads/*:refs/remotes/origin/*

Did the trick

Solution 4 - Git

Not sure if this is helpful or exactly relevant to your question, but if you are trying to fetch and checkout only a single branch from the remote repository, then the following git commands will do the trick:

url= << URL TO REPOSITORY >>
branch= << BRANCH NAME >>

git init
git remote add origin $url
git fetch origin $branch:origin/$branch
git checkout -b $branch --track origin/$branch

Solution 5 - Git

none of the above worked for me. My situation is slightly different, my remote branch is not at origin. but in a different repository.

git remote add remoterepo GIT_URL.git
git fetch remoterepo
git checkout -b branchname remoterepo/branchname

tip: if you don't see the remote branch in the following output git branch -v -a there is no way to check it out.

Confirmed working on 1.7.5.4

Solution 6 - Git

For me what worked was:

git fetch

Which pulls all the refs down to your machine for all the branches on remote. Then I could do

git checkout <branchname>

and that worked perfectly. Similar to the top voted answer, but a little more simple.

Solution 7 - Git

I suspect there is no remote branch named remote-name, but that you've inadvertently created a local branch named origin/remote-name.

Is it possible you at some point typed:

git branch origin/remote-name

Thus creating a local branch named origin/remote-name? Type this command:

git checkout origin/remote-name

You'll either see:

Switched to branch "origin/remote-name"

which means it's really a mis-named local branch, or

Note: moving to "origin/rework-isscoring" which isn't a local branch
If you want to create a new branch from this checkout, you may do so
(now or later) by using -b with the checkout command again. Example:
git checkout -b 

which means it really is a remote branch.

Solution 8 - Git

It's not very intuitive but this works well for me ...

  mkdir remote.git & cd remote.git & git init
  git remote add origin $REPO
  git fetch origin $BRANCH:refs/remotes/origin/$BRANCH        

THEN run the git branch --track command ...

  git branch --track $BRANCH origin/$BRANCH


   

Solution 9 - Git

For me I had a typo and my remote branch didn't exist

Use git branch -a to list remote branches

Solution 10 - Git

Could your issue be linked to this other SO question "checkout problem"?

i.e.: a problem related to:

  • an old version of Git
  • a curious checkout syntax, which should be: git checkout -b [<new_branch>] [<start_point>], with [<start_point>] referring to the name of a commit at which to start the new branch, and 'origin/remote-name' is not that.
    (whereas git branch does support a start_point being the name of a remote branch)

Note: what the checkout.sh script says is:

  if test '' != "$newbranch$force$merge"
  then
    die "git checkout: updating paths is incompatible with switching branches/forcing$hint"
  fi

It is like the syntax git checkout -b [] [remote_branch_name] was both renaming the branch and resetting the new starting point of the new branch, which is deemed incompatible.

Solution 11 - Git

After fetching a zillion times still added remotes didn't show up, although the blobs were in the pool. Turns out the --tags option shouldn't be given to git remote add for whatever reason. You can manually remove it from the .git/config to make git fetch create the refs.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionIkkeView Question on Stackoverflow
Solution 1 - Gituser167628View Answer on Stackoverflow
Solution 2 - GitRare PleasuresView Answer on Stackoverflow
Solution 3 - GitPålOliverView Answer on Stackoverflow
Solution 4 - GitVirtualStaticVoidView Answer on Stackoverflow
Solution 5 - GitOlivier RefaloView Answer on Stackoverflow
Solution 6 - GitMattView Answer on Stackoverflow
Solution 7 - GitDon BransonView Answer on Stackoverflow
Solution 8 - GitEdward J BeckettView Answer on Stackoverflow
Solution 9 - GitThomasView Answer on Stackoverflow
Solution 10 - GitVonCView Answer on Stackoverflow
Solution 11 - GiteMPee584View Answer on Stackoverflow