2016-02-05 89 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?