这就是为什么你收到错误信息,你是。
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 branch -r
。如果您没有提及您认为应该存在的分行,则可能需要执行git fetch
以从远程获取分行。
如果您提供-b
但没有分支名称以关闭新分支,git默认为使用HEAD
,即您当前签出分支所处的提交。
git checkout -b origin/BRANCH
这将创建一个新的当地分支叫origin/BRANCH
根据您目前的承诺。充其量,这可能会引起你一些困惑,听起来并不像你想要的那样。
非常感谢,非常完整的答案。 – saeedgnu 2011-06-11 12:47:16