git - Git无法切换分支,除了master
问题描述
我是 git 新手,正在尝试处理分叉和克隆的 repo。在我的电脑中,我可以看到分支。
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
。我不知道我这样做时内部发生了什么,但它现在正在工作。
解决方案
从man git-checkout
( git help checkout
):
如果
<branch>
未找到,但在一个远程(调用它)中确实存在一个<remote>
具有匹配名称的跟踪分支,则视为等同于$ git checkout -b <branch> --track <remote>/<branch>
所以,通常,git checkout dev
只会工作并做正确的事情。在您的情况下它不起作用的原因是您有两个遥控器,origin
并且upstream
都包含一个dev
分支,因此 Git 不知道要签出哪个遥控器。
在这种情况下,您必须改用较长的形式:
git checkout -b dev --track origin/dev
这-b dev
会创建一个名为的本地分支dev
,因此您最终不会处于“分离 HEAD”状态。将其--track origin/dev
设置为跟踪分支,以便您可以正确推拉它。
实际上,--track
为您提供了一个合理的默认值-b
,因此您可以将其缩短为:
git checkout --track origin/dev
推荐阅读
- c# - 从 xml childnotes 获取数据到 listview
- laravel - 使用 Laravel 中的关系根据第二个表中的条件获取关联记录
- reactjs - 在将 React 应用程序转换为 Preact 期间面临的问题
- node.js - 更新多个对象时如何提高 MongoDb 性能
- python - Sympy 表达式的评估不会产生正确的结果
- javascript - 使用JS更改表格中单元格的行颜色
- node.js - 无法从导出的 firebase 函数中引用未导出的 firebase 函数
- android - 以固定的时间间隔更改 Android UI
- xamarin.forms - android.contentResolver 在空对象引用上
- python - Scrapy 没有从 Selenium 解析 page_source