检查远程中存在的分支

时间:2016-02-05 23:22:38

标签: git github

我正在使用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

这真令人沮丧。在这一点上,我似乎尝试了fetchpullbranch的所有可能组合,无论我做什么,我都无法获得我的本地克隆这个回购甚至表明这些分支存在,更不用说让我看看它们了。

这里发生了什么?这似乎是世界上最简单的东西:鉴于我的仓库有一些我想要的分支,克隆仓库并检查那个分支。

3 个答案:

答案 0 :(得分:2)

要确保从遥控器获取所有分支,请尝试:

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

请参阅:enter image description here

答案 1 :(得分:1)

  

但是,这些都不能解决我的问题。此外,无论我做什么,当我列出我的分支时,除了主分支外都没有出现

从您发布的输出中,您正在寻找的分支似乎不在远程服务器上。

但是,如果它存在于远程服务器上(让其名称为my_desired_branch),您可以使用命令创建指向远程分支的本地分支(具有相同名称) :

git branch my_desired_branch origin/my_desired_branch 
git checkout my_desired_branch

您可以使用git checkout -b

组合上述两个命令
git checkout -b my_desired_branch origin/my_desired_branch 

如果本地分支my_desired_branch已存在但未连接到远程分支,您可以使用以下命令重新连接它们:

git branch -u origin/my_desired_branch my_desired_branch

有关使用git branch的更多帮助,您可以在命令行上阅读documentation或运行git help branch

答案 2 :(得分:1)

要检查远程存储库,您可以使用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
[...]

这将列出该远程存储库中存在的所有引用(分支/标记/ etc)以及它们指向的哈希。克隆该存储库后,您应该能够访问所有这些引用。

您确定使用正确的地址克隆了吗? git ls-remote在您的案例中列出了什么?如果您的存储库是公开的,请提供您用于克隆的完整地址。