我是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
。当我选择它时,它切换到该分支,并且命令提示符问题也已解决。现在,我可以切换到master
或dev
。我不知道这样做时内部发生了什么,但现在可以正常工作。
答案 0 :(得分:4)
来自man git-checkout
(git help checkout
):
如果未找到
<branch>
,但确实存在跟踪 恰好在一个远程分支(称为<remote>
)中分支 匹配名称,等同于$ git checkout -b <branch> --track <remote>/<branch>
因此,git checkout dev
通常会工作并完成正确的事情。在您的情况下不起作用的原因是您有两个远程origin
和upstream
,它们都包含一个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