我正在尝试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 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
你想让git理解“快捷方式”结账符号,但它似乎发现它不适用。也许多个遥控器有分支名为feature_branch
?
好吧,无论如何,git checkout -b feature-branch -track upstream/feature-branch
应该工作
这篇帖子为我解决了。我忘记了我做了回购的浅层克隆。 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
当您要求签出不存在的本地分支(例如,从某个远程分支创建它)时,可能会发生一些自动化,但这对您来说不会失败:git checkout upstream/feature-branch
。唯一的事情是没有创建本地分支。
当你运行git checkout feature-branch
git尝试删除名为feature-branch
的文件中所有未保存的更改。对于checkout
你的分支使用像这个-b
的git checkout -b feature-branch
选项。