我正在尝试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.
我做错了吗?
答案 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
选项。