5

I'm using git version 1.8.3.1 (centos 7). I have a repository on github with a bunch of branches. I clone that repository and attempt to check out one of those branches, but it won't let me:

$ git clone my_repo $ cd my_repo $ git checkout my_desired_branch error: pathspec 'my_desired_branch' did not match any file(s) known to git. 

I know that this branch exists in the remote branch; I pushed it from another computer, and I can check it out on github no problem. Reading up on similar issues on stack overflow, the answers seem to variously consist of:

$ git fetch [--all] $ git pull [--all] 

However, none of these things solve my problem. Furthermore, no matter what I do, nothing except the master branch shows up when I list my branches:

$ git branch * master $ git branch -a * master remotes/origin/HEAD -> origin/master remotes/origin/master $ git branch -r origin/HEAD -> origin/master origin/master 

I also can't fetch my branch from the repo by hash:

$ git fetch origin 6175e3ae4c88669af8aa5cd12b 

This command gives no output, even with --verbose... but inspecting the exit code shows that it's 1. And of course:

$ git checkout 6175e3ae4c88669af8aa5cd12b fatal: reference is not a tree: 6175e3ae4c88669af8aa5cd12b 

This is really frustrating. At this point I've tried seemingly every possible combination of fetch, pull, and branch, and no matter what I do, I can't get my local clone of this repo to even show that these branches exist, let alone let me check them out.

What is happening here? It seems like the simplest thing in the world: given that my repo has some branch that I want, clone the repo and check out that branch.

2
  • Try this command and post the output: git cat-file -p 6175e3ae4c88669af8aa5cd12b if that SHA exists, it will tell you what it is. If it points to a file it will output the file. If it is a commit it will output the commit details. I'm guessing the SHA is unknown, or points to a file not a commit. I would probably do a git fetch origin before too. Commented Feb 6, 2016 at 0:07
  • What does git remote -v give you? Commented Feb 6, 2016 at 8:05

3 Answers 3

5

To make sure you fetch all the branches from the remote, try:

git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*' git fetch --all 

See: How to fetch all remote branches?

Sign up to request clarification or add additional context in comments.

Comments

2

However, none of these things solve my problem. Furthermore, no matter what I do, nothing except the master branch shows up when I list my branches

From the output you posted, it seems the branch you are looking for is not present on the remote server.

However, if it is present on the remote server (let's say its name is my_desired_branch) you can make a local branch (having the same name) that points to the remote branch using the commands:

git branch my_desired_branch origin/my_desired_branch git checkout my_desired_branch 

You can combine both of the commands above using git checkout -b:

git checkout -b my_desired_branch origin/my_desired_branch 

If the local branch my_desired_branch already exists but it is not connected to the remote branch you can reconnect them using:

git branch -u origin/my_desired_branch my_desired_branch 

For more help about using git branch you can read the documentation or run git help branch on your command line.

Comments

1

To examine a remote repository you can use git ls-remote:

$ git ls-remote https://github.com/git/git.git ff4ea6004fb48146330d663d64a71e7774f059f9 HEAD a08595f76159b09d57553e37a5123f1091bb13e7 refs/heads/maint ff4ea6004fb48146330d663d64a71e7774f059f9 refs/heads/master b2aa7f843ccc79397d54723df13034a8761f5a18 refs/heads/next 0fea0509a8d85f1133db93c39b00e2c6ef285b4f refs/heads/pu [...] 

This will list all the refs (branches/tags/etc) present at that remote repository and the hash they point to. After you clone that repository you should be able to access all those refs.

Are you sure you cloned using the correct address? What does git ls-remote list in your case? If your repository is public, please give the full address you used for cloning.

1 Comment

git ls-remote shows me a ton of branches, including the one I'm trying to fetch. Unfortunately, it's not a public repository.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.