Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git无法切换分支,主分支除外_Git_Github - Fatal编程技术网

Git无法切换分支,主分支除外

Git无法切换分支,主分支除外,git,github,Git,Github,我是git的新手,当时正在尝试一个分叉克隆的回购协议。在我的电脑里我可以看到分支 c:\>git branch -a * master remotes/origin/HEAD -> origin/master remotes/origin/dev remotes/origin/master remotes/upstream/dev remotes/upstream/master 以及 但当我这么做的时候 c:\> git checkout master A

我是git的新手,当时正在尝试一个分叉克隆的回购协议。在我的电脑里我可以看到分支

c:\>git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/dev
  remotes/origin/master
  remotes/upstream/dev
  remotes/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桌面软件。单击“添加本地repository”选项并选择我克隆repo的文件夹。然后单击下拉分支,我可以在那里看到
dev
。当我选择它时,它切换到那个分支,命令提示符问题也得到了解决。现在我可以切换到
master
dev
。我不知道我这样做时内部发生了什么,但它现在正在工作。

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

您可能需要尝试以下方法:

git fetch origin
git checkout dev

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

您可能需要尝试以下方法:

git fetch origin
git checkout dev

man-git-checkout
git-help-checkout
):

如果未找到
,但确实存在跟踪 使用 匹配名称,视为等同于

 $ git checkout -b <branch> --track <remote>/<branch>
-b dev
创建一个名为
dev
的本地分支,这样您就不会处于“分离头”状态。
--track origin/dev
将其设置为跟踪分支,以便您可以正确地推拉它

实际上,
--track
-b
提供了一个合理的默认值,因此您可以将其缩短为:

git checkout --track origin/dev

man-git-checkout
git-help-checkout
):

如果未找到
,但确实存在跟踪 使用 匹配名称,视为等同于

 $ git checkout -b <branch> --track <remote>/<branch>
-b dev
创建一个名为
dev
的本地分支,这样您就不会处于“分离头”状态。
--track origin/dev
将其设置为跟踪分支,以便您可以正确地推拉它

实际上,
--track
-b
提供了一个合理的默认值,因此您可以将其缩短为:

git checkout --track origin/dev

我试过了,它会变成一个独立的头部模式。如下所示,c:\>git签出源代码/dev注意:签出'origin/dev'。你处于“超脱的头部”状态。您可以环顾四周,进行实验性更改并提交它们,并且可以通过执行另一次签出放弃在此状态下所做的任何提交,而不会影响任何分支。如果要创建新分支以保留创建的提交,可以(现在或以后)再次使用-b和checkout命令来执行此操作。示例:git checkout-b HEAD现在的Gui缩略图为455946b(#14),我试过了,它将进入分离HEAD模式。如下所示,c:\>git签出源代码/dev注意:签出'origin/dev'。你处于“超脱的头部”状态。您可以环顾四周,进行实验性更改并提交它们,并且可以通过执行另一次签出放弃在此状态下所做的任何提交,而不会影响任何分支。如果要创建新分支以保留创建的提交,可以(现在或以后)再次使用-b和checkout命令来执行此操作。示例:git checkout-b HEAD现在是455946bgui缩略图(#14)切换到dev分支?就像唯一的一个?这里的问题是,尽管git给出的错误消息可以更清楚地说明这一点,但是您有两个开发分支,
origin/dev
upstream/dev
。因为git没有找到1个分支,所以它不知道您想签出哪个分支
master
已经在本地签出至少一次,这样可以正常工作,但是
git checkout dev
没有找到名为
dev
的本地分支,因此它会在远程上查找分支,因为它找到了2个,所以它不知道您指的是哪一个。切换到dev branch?就像唯一的一个?这里的问题是,尽管git给出的错误消息可以更清楚地说明这一点,但是您有两个开发分支,
origin/dev
upstream/dev
。因为git没有找到1个分支,所以它不知道您想签出哪个分支
master
已经在本地签出了至少一次,这样可以正常工作,但是git checkout dev没有找到名为
dev
的本地分支,因此它在远程上寻找分支,因为它找到了2个,所以它不知道您指的是哪一个。坦白说,git给出的错误消息可以更清楚地说明这一点。我以某种奇怪的方式解决了这个问题(请参见编辑)。我只是想问一件事,这不是通常的做法吗?分叉和克隆,然后将原始回购设置为上游?那么这不是有两个
dev
?一个是我自己的克隆回购协议,另一个是原始回购协议?我不知道这是否有意义,我对这有点陌生。我不知道GitHub桌面应用程序,但我猜它默认为
源站
远程查看分支。或者它查看了repo URL并使用了您的用户帐户所拥有的URL(该URL也将解析为
源代码
)。@LasseVågsætherKarlsen绝对,错误消息是可怕的。它可能源于这样一个事实,即
git checkout X
中的
X
可能指的是一个分支,但也指的是一个文件或目录(“git中的pathspec”)。它只有在找不到分支时才开始查找文件。这不是借口,只是观察。请注意,您可以拼写checkout
git checkout--track origin/dev
:默认的
-