Git签出:更新path与交换分支不兼容

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

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

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

但我得到这个错误消息:

致命的:git checkout:更新path与切换分支不兼容。
你打算签出无法parsing为“提交”的“origin / remote-name”吗?

如果我手动创build一个分支,然后拉动远程分支,就像创build一个新的克隆并检查分支一样。

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

我相信这发生在你试图结帐远程分支时,你的本地git仓库还没有意识到。 尝试:

 git remote show origin 

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

 git remote update git fetch 

现在它应该工作:

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

备用语法,

 git fetch origin remote_branch_name:local_branch_name 

在尝试了大部分能够在这个线程中看不到的东西之后,我偶然发现了这个: 远程分支没有出现在“git branch -r”

事实certificate,我的.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/* 

诀窍了

不知道这是否对您的问题有帮助或完全相关,但是如果您试图从远程存储库中只取出一个分支并检出,那么下面的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 

以上都没有为我工作。 我的情况稍有不同,我的远程分支不在原点 。 但在不同的存储库。

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

提示:如果在下面的输出中没有看到远程分支,那么git branch -v -a是无法检查出来的。

证实在1.7.5.4工作

对我来说有效的是:

 git fetch 

它把所有的裁判拖到你机器上的所有远程分支。 然后我可以做

 git checkout <branchname> 

而且工作完美。 类似顶部的投票答案,但更简单一点。

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

是否有可能在某种程度上键入:

 git分支来源/远程名称

这样创build一个名为origin / remote-name的本地分支? input这个命令:

 git checkout origin / remote-name

你会看到:

切换到分支“起源/远程名称”

这意味着它确实是一个错误的地方分支,或者

注意:移动到不是本地分支的“origin / rework-isscoring”
如果你想从这个结帐创build一个新的分支,你可以这样做
 (现在或以后)再次使用-b和checkout命令。 例:
   git checkout -b 

这意味着它确实是一个远程分支。

这不是很直观,但这对我很好…

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

然后运行git分支–track命令…

  git branch --track $BRANCH origin/$BRANCH 

你的问题可以链接到这个其他SO问题“结帐问题” ?

即:与以下相关的问题:

  • 旧版本的Git
  • 一个好奇的签出语法,它应该是: 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]既重命名分支,又重新设置新分支的新起点,这被认为是不兼容的。

提取了数十亿次后,仍然添加了遥控器,但没有显示出来,尽pipe这些斑点在池中。 事实certificate,不应该给gta git remote add –tags选项,无论出于何种原因。 您可以手动从.git / config中删除它,使git fetch创buildrefs。