“无法同时更新路径并切换到分支”

时间:2014-04-10 09:40:32

标签: git git-checkout

我有时使用checkout -b选项创建一个新分支,同时检查它并在一个命令中设置跟踪。

在新环境中,我收到此错误:

$ git checkout -b test --track origin/master
fatal: Cannot update paths and switch to branch 'test' at the same time.
Did you intend to checkout 'origin/master' which can not be resolved as commit?

为什么Git不喜欢它?这曾经使用相同的仓库。

12 个答案:

答案 0 :(得分:183)

  

'origin/master'无法解析为提交

奇怪:你需要检查你的遥控器:

git remote -v

并确保获取origin

git fetch origin

然后:

git branch -avv

(看看你是否确实提取了origin/master分支)

答案 1 :(得分:70)

FWIW:如果你的分支机构中有拼写错误,你会得到同样的错误。

答案 2 :(得分:50)

您可以在以下情况下获得此错误: Travis构建,默认情况下,使用git clone --depth=50 --branch=master检查代码。据我所知,您可以通过--depth而不是.travis.yml来控制--branch。由于这会导致遥控器仅跟踪一个分支,因此您需要独立更新遥控器以跟踪所需的遥控器参考。

在:

$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master

修复:

$ git remote set-branches --add origin branch-1
$ git remote set-branches --add origin branch-2
$ git fetch

后:

$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/branch-1
remotes/origin/branch-2
remotes/origin/master

答案 3 :(得分:18)

这个简单的事对我有用!

如果它说不能同时做两件事,请将它们分开。

git branch branch_name origin/branch_name 

git checkout branch_name

答案 4 :(得分:9)

当您偶然发现此问题时,您可以按照以下步骤操作:

  1. 运行以下命令以列出本地存储库已知的分支。
  2.   

    git remote show origin

    输出:

     remote origin
      Fetch URL: <your_git_path>
      Push  URL: <your_git_path>
      HEAD branch: development
      Remote branches:
        development                             tracked
        Feature2                                tracked
        master                                  tracked
        refs/remotes/origin/Feature1         stale (use 'git remote prune' to remove)
      Local branches configured for 'git pull':
        Feature2     merges with remote Feature2
        development  merges with remote development
        master       merges with remote master
      Local refs configured for 'git push':
        Feature2     pushes to Feature2     (up to date)
        development  pushes to development (up to date)
        master       pushes to master      (local out of date)
    
    1. 在验证详细信息(获取URL等)后,运行此命令以获取远程但不在本地的任何新分支(即您可能要在本地仓库中签出的分支)。
    2. » git remote update
      
      Fetching origin
      From gitlab.domain.local:ProjectGroupName/ProjectName
       * [new branch]      Feature3    -> Feature3
      

      正如您所见,新分支已从远程获取。
      3.最后,使用此命令检出分支

      » git checkout -b Feature3 origin/Feature3
      
      Branch Feature3 set up to track remote branch Feature3 from origin.
      Switched to a new branch 'Feature3'
      

      没有必要明确告诉Git使用远程跟踪(使用 - track )分支。

      上述命令将设置本地分支以跟踪来自原点的远程分支。

答案 5 :(得分:1)

对我来说,我需要添加遥控器:

git remote -add myRemoteName('origin' in your case) remoteGitURL

然后我可以获取

git fetch myRemoteName

答案 6 :(得分:1)

它导致您的本地分支不跟踪远程分支。 正如ssasi所说,你需要使用这些命令:

git remote update
git fetch
git checkout -b branch_nameA origin/branch_nameB

我刚刚解决了我的问题......

答案 7 :(得分:1)

如果分支中有空格,则会出现此错误。

答案 8 :(得分:0)

首先你需要Fetch远程(特定分支),然后你可以使用你的命令创建一个本地br并使用该远程分支跟踪它(即checkout和-b和 - 轨道)。

答案 9 :(得分:0)

你应该去子模块目录并运行git reset .

您可能会看到很多文件已被删除。你可以运行

  1. git checkout .

  2. git fetch -p

  3. git rm --cached submodules

  4. git submoudle add .... // submoudles是您的名字

  5. foo="uNcapItalizedstrIng" echo $foo | awk '{print toupper(substr($0,0,1))tolower(substr($0,2))}'

答案 10 :(得分:0)

您可以使用以下命令: git远程更新, git fetch, git checkout -b branch_nameA origin:branch_nameB

我想也许是因为你的本地分支无法跟踪远程分支

答案 11 :(得分:0)

就我而言,我必须使用以下命令使用远程存储库中的最新标签更新我的 locate git 存储库:

git fetch --tags

获取远程存储库标签的命令可能因您组织的 Git 设置而异。

执行此操作后,git checkout 起作用了。