Git无法切换分支,除了master

时间:2018-07-31 07:17:41

标签: git github

我是git的新手,正在尝试创建一个分叉和克隆的仓库。在我的PC中,我可以看到分支。

c:\>git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/dev
  remotes/origin/master
  remotes/upstream/dev
  remotes/upstream/master

然后

C:\>git branch -r
  origin/HEAD -> origin/master
  origin/dev
  origin/master
  upstream/dev
  upstream/master

但是当我这样做

c:\> git checkout master
Already on 'master'
Your branch is up to date with 'origin/master'.

c:\> git checkout dev
error: pathspec 'dev' did not match any file(s) known to git.

谁能告诉我为什么我不能切换到dev分支?我用谷歌搜索了一下,更新了git(现在是2.18.0.windows.1)。这个问题仍然存在。

编辑:当我在桌面应用中随机尝试操作时,此问题得到解决。我打开了Windows git桌面软件。单击选项“添加本地存储库”,然后选择我已克隆存储库的文件夹。然后,我单击了下拉分支,在那里可以看到dev。当我选择它时,它切换到该分支,并且命令提示符问题也已解决。现在,我可以切换到masterdev。我不知道这样做时内部发生了什么,但现在可以正常工作。

2 个答案:

答案 0 :(得分:4)

来自man git-checkoutgit help checkout):

  

如果未找到<branch>,但确实存在跟踪              恰好在一个远程分支(称为<remote>)中分支              匹配名称,等同于

 $ git checkout -b <branch> --track <remote>/<branch>

因此,git checkout dev通常会工作并完成正确的事情。在您的情况下不起作用的原因是您有两个远程originupstream,它们都包含一个dev分支,因此Git不知道要检出哪个。< / p>

在这种情况下,您将不得不使用更长的表格:

git checkout -b dev --track origin/dev

-b dev创建了一个名为dev的本地分支,因此您不会最终处于“分离的HEAD”状态。 --track origin/dev将其设置为跟踪分支,以便您可以正确地将其推拉。

实际上,--track为您提供了-b的默认设置,因此您可以将其缩短为:

git checkout --track origin/dev

答案 1 :(得分:1)

您没有名为dev的本地分支。您需要将原始站点中的分支获取到本地(您的计算机)

您可能需要尝试如下操作:

git fetch origin
git checkout dev