2016-02-05 43 views
2

我正在使用git版本1.8.3.1(分数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 

这真是令人沮丧。在这一点上,我已经试过看似fetch,pull,,branch的所有可能的组合,不管我做什么,我都无法得到我的本地克隆这个回购甚至显示这些分支存在,更不用说让我检查他们出去了。

这里发生了什么?这似乎是世界上最简单的事情:考虑到我的回购有一些我想要的分支,请克隆回购并检查该分支。

+0

试试这个命令和后输出:'git的猫文件-p 6175e3ae4c88669af8aa5cd12b'如果SHA存在,它会告诉你它是什么。如果它指向一个文件,它将输出文件。如果是提交,它将输出提交详细信息。我猜测SHA是未知的,或者指向文件而不是提交。我也可能会在之前做一个'git fetch origin'。 – CodingWithSpike

+0

'git remote -v'给你什么? – alextercete

回答

1

但是,这些东西都不能解决我的问题。此外,无论我做什么,没有什么,除了主分支显示出来,当我列出我的树枝

从您发布的输出,看来你正在寻找的分支不存在的远程服务器上。

但是,如果它存在的远程服务器上(假设它的名字是my_desired_branch),你可以做一个本地分支(具有相同名称)使用命令指向远程分支:

git branch my_desired_branch origin/my_desired_branch 
git checkout my_desired_branch 
如果本地分支 my_desired_branch已存在,但它没有连接到远程分支可以重新使用它们

git checkout -b my_desired_branch origin/my_desired_branch 

可以结合两种上述命令中使用git checkout -b

git branch -u origin/my_desired_branch my_desired_branch 

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

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 
[...] 

这将列出所有的裁判(分支/标签/等)出现在该远程仓库和它们指向的哈希值。克隆该存储库后,您应该能够访问所有这些参考。

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

+0

'git ls-remote'向我展示了很多分支,包括我正在尝试获取的分支。不幸的是,它不是公共存储库。 –

1

为了确保您获取从远程的所有分支,请尝试:

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

参见:How to fetch all remote branches?