Git checkout:更新路径与切换分支不兼容

爱⌒轻易说出口 提交于 2020-01-26 14:02:07

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

我尝试使用该命令获取远程分支

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

但我收到此错误消息:

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

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

为什么它不适用于我使用的存储库?


#1楼

对我来说有用的是:

git fetch

这会将所有refs下载到你的机器上,用于遥控器上的所有分支。 然后我就能做到

git checkout <branchname>

这非常有效。 类似于最高投票的答案,但更简单一点。


#2楼

在获取了数十亿次之后,仍然添加了遥控器没有出现,虽然斑点在池中。 事实证明,无论出于何种原因, 都不应将-tags选项赋予git remote add 。 您可以手动将其从.git / config中删除,以使git fetch创建refs。


#3楼

我相信当你试图检查当地git repo尚未发现的远程分支时会发生这种情况。 尝试:

git remote show origin

如果要签出的远程分支位于“新远程分支”而不是“已跟踪远程分支”,则需要先获取它们:

git remote update
git fetch

现在它应该工作:

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

#4楼

替代语法,

git fetch origin remote_branch_name:local_branch_name

#5楼

我怀疑没有名为remote-name的远程分支,但是你无意中创建了一个名为origin / remote-name的本地分支。

是否有可能在某些时候键入:

git branch origin/remote-name

从而创建一个名为origin / remote-name的本地分支? 输入以下命令:

git checkout origin/remote-name

你会看到:

Switched to branch "origin/remote-name"

这意味着它真的是一个错误命名的本地分支,或者

Note: moving to "origin/rework-isscoring" which isn't a local branch
If you want to create a new branch from this checkout, you may do so
(now or later) by using -b with the checkout command again. Example:
  git checkout -b

这意味着它真的是一个远程分支。


#6楼

在尝试了我在这个帖子中读到的大部分内容之后没有成功,我偶然发现了这个: 远程分支没有出现在“git branch -r”中

原来我的.git / config文件不正确。 做了一个简单的修复后,所有分支都出现了。

来自

[remote "origin"]
    url = http://stash.server.com/scm/EX/project.git
    fetch = +refs/heads/master:refs/remotes/origin/master

[remote "origin"]
    url = http://stash.server.com/scm/EX/project.git
    fetch = +refs/heads/*:refs/remotes/origin/*

诀窍


#7楼

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

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


#8楼

不确定这是否对您的问题有用或完全相关,但如果您尝试从远程存储库中仅获取并签出一个分支,则以下git命令将执行此操作:

url= << URL TO REPOSITORY >>
branch= << BRANCH NAME >>

git init
git remote add origin $url
git fetch origin $branch:origin/$branch
git checkout -b $branch --track origin/$branch

#9楼

以上都不适合我。 我的情况略有不同,我的远程分支不在原点 。 但是在不同的存储库中。

git remote add remoterepo GIT_URL.git
git fetch remoterepo
git checkout -b branchname remoterepo/branchname

提示:如果在以下输出git branch -v -a没有看到远程分支,则无法将其检出。

确认工作在1.7.5.4


#10楼

它不是很直观,但对我来说效果很好......

  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

#11楼

您的问题是否可以与其他SO问题“结帐问题”相关联

即:与以下问题有关的问题:

  • Git的旧版本
  • 一个奇怪的checkout语法,应该是: git checkout -b [<new_branch>] [<start_point>][<start_point>]引用启动新分支的提交名称,以及'origin/remote-name'不是那个。
    (而git branch确实支持start_point作为远程分支的名称)

注意: checkout.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]一样,都重命名了分支并重置了新分支的新起点,这被认为是不兼容的。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!