问题描述
|
我想从远程获取分支,但是我的分支名称不是以远程名称开头的,例如:
git checkout -b BRANCH origin/BRANCH
在某些情况下可以使用,但在某些情况下会出现此错误:
fatal: git checkout: updating paths is incompatible with switching branches.
虽然我确定遥控器具有此分支,并且这样有效:
git checkout -b origin/BRANCH
在那之后,我必须切换到另一个分支并将分支起源/ BRANCH重命名为BRANCH,然后再次切换到BRANCH ...
我想知道该错误意味着什么。
解决方法
这就是为什么您收到错误消息的原因。
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
创建新分支的ѭ9branch选项仅在使用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
。如果您没有引用您认为应该存在的分支,则可能必须执行ѭ15才能从远程检索它。
如果您提供-b
但没有分支名称作为新分支的基础,则git默认使用HEAD
,即当前已签出分支的提交已启用。
git checkout -b origin/BRANCH
这会根据您的当前提交创建一个名为origin/BRANCH
的新本地分支。充其量,这很可能会引起您一些困惑,并且听起来根本不是您想要的。
, “ 3”切换到某个分支,它不会从远程存储库中获取它。 git checkout -b
也会创建分支。要从远程存储库检索分支,请使用ѭ15。