git fetch工作但checkout分支不起作用

时间:2017-06-02 18:00:38

标签: git

我正在尝试checkout我刚刚从我的upstream远程仓库获取的分支,但它似乎无效。

$ git fetch upstream
Fetching upstream
From github.com:group/repo
* [new branch]      feature-branch -> upstream/feature-branch

$ git checkout feature-branch
error: pathspec 'feature-branch' did not match any file(s) known to git.

我做错了吗?

5 个答案:

答案 0 :(得分:8)

分支可能存在于多个遥控器中。 (您可以使用git branch --list --remotes '*/feature-branch'进行确认。)git checkout只有在明确无误的情况下才会创建分支。来自git-checkout(1)

  

如果找不到<branch>但是在一个具有匹配名称的遥控器(称为<remote>)中确实存在跟踪分支,则将其视为等效于

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

所以你需要这样做:

git checkout -b feature-branch --track upstream/feature-branch

答案 1 :(得分:2)

你想让git理解“快捷方式”结帐符号,但它似乎发现它不适用。也许多个遥控器的分支名为feature_branch

嗯,无论如何,git checkout -b feature-branch -track upstream/feature-branch应该工作

答案 2 :(得分:0)

这篇文章为我解决了。我忘记了我对存储库做了一个浅表的克隆。 How to convert a Git shallow clone to a full clone?

以下命令(git版本1.8.3)会将浅表克隆转换为常规克隆

git fetch --unshallow

然后,可以访问原始站点上的所有分支(感谢@Peter的评论)

git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git fetch origin

答案 3 :(得分:-1)

当您要求签出不存在的本地分支(例如,从某个远程分支创建它)时,可能会发生一些自动化,但这对您来说不会失败:git checkout upstream/feature-branch。唯一的事情是没有创建本地分支。

答案 4 :(得分:-1)

当您运行git checkout feature-branch git时,请尝试删除名为feature-branch的文件中所有未保存的更改。对于checkout,您的分支机构会使用-b这样的git checkout -b feature-branch选项。