我正在使用git版本1.8.3.1(centos 7)。我在github上有一个仓库,里面有很多分支。我克隆了存储库并尝试签出其中一个分支,但它不允许我:

$ 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.

我知道这个分支存在于远程分支中,我把它从另一台计算机上推出来,我可以在Github上查出来,没问题。在阅读有关堆栈溢出的类似问题时,答案似乎各不相同,包括:
$ git fetch [--all]
$ git pull [--all]

然而,这些都不能解决我的问题。此外,无论我做什么,当我列出我的分支时,除了主分支之外,什么都不会出现:
$ git branch
* master
$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
$ git branch -r
  origin/HEAD -> origin/master
  origin/master

我也无法通过散列从回购中获取分支:
$ git fetch origin 6175e3ae4c88669af8aa5cd12b

此命令不提供输出,即使使用--verbose…但是检查退出代码显示它是1。当然还有:
$ git checkout 6175e3ae4c88669af8aa5cd12b
fatal: reference is not a tree: 6175e3ae4c88669af8aa5cd12b

这真是令人沮丧。在这一点上,我尝试了各种可能的组合:fetchpull,和branch,而且不管我做什么,我都不能得到我的本地克隆这个回购甚至显示这些分支存在,更不用说让我检查出来了。
这里发生了什么事?这似乎是世界上最简单的事情:鉴于我的回购协议有我想要的分支,克隆回购协议并查看该分支。

最佳答案

要确保从远程获取所有分支,请尝试:

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

见:How to fetch all remote branches?

09-04 08:14
查看更多