如何检出仅在`git ls-remote`中列出的分支?

时间:2019-08-03 06:18:21

标签: git github

我遇到无法切换到仅在git ls-remote中列出的分支的情况,这是详细信息:

我将github repoA作为repoB进行了分叉,在ComputerA中创建了自己的分支并将其推送到repoB,在ComputerB中,我将分叉的repo克隆到了本地磁盘中,添加了远程上游,并尝试切换到我创建的分支,但是失败,但是我可以成功切换到github网页中的同一分支。

以下结果来自ComputerB中的repoB。

ls远程分支:

$ git ls-remote --heads
2da2080ea7201fc7928e947dc3214dd89d86c4ba        refs/heads/enable-vim-better-whitespace
433cedd84bba8bcdf3584734906b2c0fd3b6dc3a        refs/heads/fix-lsp-cache-dir
ff65e1cd687d0c144e98b09e4d7a164f8b6bfd3e        refs/heads/gh-pages
17e53cf01badebc2abef7df375903da71bf884d8        refs/heads/master
7b8f8a2dccb0715ff1c1c411abf40b2ff6cec30b        refs/heads/vim-plug
26b8a0ba594af1068997c70c4ef0f503571557b3        refs/heads/vundle

列表分支:

$ git branch
  abc
* master

$ git branch -r
  origin/HEAD -> origin/master
  origin/master
  upstream/gh-pages
  upstream/master
  upstream/vim-plug
  upstream/vundle

$ git branch -a
  abc
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/upstream/gh-pages
  remotes/upstream/master
  remotes/upstream/vim-plug
  remotes/upstream/vundle

分支abc是我尚未推送的本地分支。

并且我尝试了几种切换到分支的方法,例如fix-lsp-cache-dir

$ git checkout fix-lsp-cache-dir
error: pathspec 'fix-lsp-cache-dir' did not match any file(s) known to gi

$ git checkout -t origin/fix-lsp-cache-dir
fatal: 'origin/fix-lsp-cache-dir' is not a commit and a branch 'fix-lsp-cache-dir' cannot be created from it

我尝试了google,但是所有建议的方法都失败了。

那我该怎么做才能切换到git ls-remote中的仅分支列表

1 个答案:

答案 0 :(得分:3)

您需要先git fetch

检查您的git config remote.origin确实显示fetch refspec,如:

fetch = +refs/heads/*:refs/remotes/origin/*

这会将fix-lsp-cache-dir导入您的存储库,您将可以检出该分支。
结帐或... soon git switch

OP CodyChan确认in the comments

remote.origin.fetch=+refs/heads/master:refs/remotes/origin/master

那只会获取大师,别无他物。

cd /path/to/my/repo
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"

那应该解决它。