我正在使用 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上轻松地检查它。在Stack Overflow上阅读类似问题的答案时,回答似乎各不相同,包括:
$ 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
这真的很令人沮丧。到目前为止,我已经尝试了看似所有可能的fetch
、pull
和branch
的组合,但无论我做什么,我的本地克隆库甚至都不能显示这些分支的存在,更不用说让我检出它们了。
发生了什么?这似乎是世界上最简单的事情:既然我的repo有一些我想要的分支,那就克隆该repo并检出该分支。
git cat-file -p 6175e3ae4c88669af8aa5cd12b
如果该SHA存在,则会告诉您它是什么。如果它指向一个文件,它将输出该文件。如果它是提交,则会输出提交详细信息。我猜测这个SHA是未知的,或者指向的是文件而不是提交。在此之前,我可能会执行git fetch origin
。 - CodingWithSpikegit remote -v
命令会给你什么信息? - alextercete