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

问题描述 投票:0回答:5

我正在尝试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.

难道我做错了什么?

git
5个回答
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

2
投票

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

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


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

-1
投票

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


-1
投票

当你运行git checkout feature-branch git尝试删除名为feature-branch的文件中所有未保存的更改。对于checkout你的分支使用像这个-bgit checkout -b feature-branch选项。

© www.soinside.com 2019 - 2024. All rights reserved.