我的问题与切换分支时致命的Git错误有关。

我试图用这个命令获取一个远程分支

git checkout -b local-name origin/remote-name

但是我得到了这个错误信息:

致命:git签出:更新路径与切换分支不兼容。 您是否打算签出无法解析为提交的“origin/remote-name”?

如果我手动创建一个分支,然后拉出远程分支,它就可以工作,就像创建一个新的克隆并签出分支一样。

为什么它不能在我使用的存储库上工作?


当前回答

对我来说,我有一个拼写错误,我的远程分支不存在

使用git branch -a列出远程分支

其他回答

这不是很直观,但这对我来说很管用……

  mkdir remote.git & cd remote.git & git init
  git remote add origin $REPO
  git fetch origin $BRANCH:refs/remotes/origin/$BRANCH        

然后运行git branch——track命令…

  git branch --track $BRANCH origin/$BRANCH

对我来说,我有一个拼写错误,我的远程分支不存在

使用git branch -a列出远程分支

您的问题是否与另一个SO问题“结帐问题”有关?

例如:与以下方面有关的问题:

旧版本的Git 一个奇怪的签出语法,应该是:git checkout -b [<new_branch>] [<start_point>],其中[<start_point>]指的是启动新分支的提交名称,而'origin/remote-name'不是这样的。 (而git分支支持start_point作为远程分支的名称)

注意:check - out.sh脚本说的是:

  if test '' != "$newbranch$force$merge"
  then
    die "git checkout: updating paths is incompatible with switching branches/forcing$hint"
  fi

这就像语法git checkout -b [] [remote_branch_name]既重命名了分支,又重置了新分支的新起点,这被认为是不兼容的。

我相信当您试图签出本地git回购还不知道的远程分支时,就会发生这种情况。试一试:

git remote show origin

如果你想要签出的远程分支在“新的远程分支”而不是“跟踪的远程分支”下面,那么你需要先获取它们:

git remote update
git fetch

现在它应该工作了:

git checkout -b local-name origin/remote-name

对我来说有效的方法是:

git fetch

它会把所有的参考都拉到你的机器上,用于远程的所有分支。然后我就可以

git checkout <branchname>

而且效果非常好。与投票最多的答案相似,但更简单一点。