git:为什么我得到错误错误:pathspec''与git已知的任何文件都不匹配

问题描述:

我发现了一个有趣的场景。此问题与this one有关。git:为什么我得到错误错误:pathspec'<branch name>'与git已知的任何文件都不匹配

我有git(版本1.8.3.1),我在本地创建了一个分支,然后我将它推送到我的远程存储库。我检查了(git branch -a)它存在于远程存储库中。

现在,我在另一台机器上安装了存储库。当我运行以下命令(使用版本1.8.3.1):

git fetch 
git checkout <my branch> 

我正确签出到我的分支。

但是,我也有git版本的git版本2.6.3。当我运行上面的命令,我得到的错误:

error: pathspec '<branch name>' did not match any file(s) known to git. 

我期望在旧的Git版本情况下,该错误(见链接的问题),但它为什么失败的版本2.6。 3?

如果我使用旧版本的git结帐到我的分支,我也可以使用git 2.6.3版检出它。

这是否意味着git开发人员决定删除v1.7.0-rc0中引入的这个很好的功能,并且我必须运行git checkout -b <branch> --track <remote>/<branch>或者我在某处犯了什么错误?

+0

尝试'混帐取起源:裁判/遥控器/产地/ && git的结帐'。你的'git fetch'没有任何东西。此外,你需要确保存在“origin”。如果没有,请先运行'git remote add origin '。 'origin'可以是另一个名字,如果它已经在那里,可以用'refs/remotes/origin/'替换'orign'。 – ElpieKay

+0

将'git branch -r'的输出添加到您的问题中。我想我知道答案,但需要参考它。 – torek

+0

您可以使用'git branch -a'来检查分支名称是否存在于远程。如果存在,则在'git checkout'之后**复制**(不输入)分支名称。如果分支名称是“-a”,通常会导致拼写错误,因为'-a'与'-a'不同。所以你最好复制分支名称。 –

如果origin/mybranch确实存在,一个简单的

git checkout mybranch 

应该够了。

因此请仔细检查git branch -rgit fetch之后显示的内容。

If <branch> is not found but there does exist a tracking branch in exactly one remote (call it <remote>) with a matching name, treat as equivalent to

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