这就是您收到错误消息的原因。
git checkout
可以做两件事之一。如果您只指定一个分支而不指定任何路径,那么它会将您当前的分支切换到您指定的分支。
git checkout mybranch # switch to branch 'my branch'
如果您提供了一些路径,那么 git 将从索引中检出这些路径,或者,如果您指定一个分支,则从给定的分支检出这些路径。
git checkout myfile # checkout 'myfile' from index
如您所见,存在潜在的歧义。如果您有一个名为的分支myfile
或一个名为的文件,会发生什么mybranch
?
git 解决这种歧义的方法是它首先测试参数以查看它是否匹配分支,如果不匹配,则假定参数引用文件。如果您有一个具有相同名称的分支和文件,您可以强制 git 将参数视为具有此语法的文件。
git checkout -- myfile # treat 'myfile' as a file
创建新分支的-b
选项仅在您使用分支切换形式时有效,checkout
而不是在您从索引中检出指定文件时有效。
git checkout -b newbranch myfile # Illegal. I can't use `-b` when
# I'm checking out files.
如果您尝试git checkout -b newbranch origin/BRANCH
并收到此错误,则意味着origin/BRANCH
与您拥有的任何分支的名称不匹配,因此 git 假定您必须引用文件。
要显示您可以执行的远程分支引用git branch -r
。如果您没有对您认为应该存在的分支的引用,您可能必须执行 agit fetch
从远程检索它。
如果您提供-b
但没有分支名称来作为新分支的基础,则 git 默认使用 using HEAD
,即您当前签出的分支所在的提交。
git checkout -b origin/BRANCH
这将创建一个基于您当前提交的新本地分支。origin/BRANCH
充其量,这可能会引起您的一些困惑,并且听起来根本不是您想要的。