我的问题与切换分支时出现致命Git错误有关。
我尝试使用命令获取远程分支
git checkout -b local-name origin/remote-name
但我收到此错误消息:
致命:git checkout:更新路径与切换分支不兼容。
您是否打算签出无法解析为提交的“来源/远程名称”?
如果我手动创建一个分支,然后拉出远程分支,则它的工作原理与创建新克隆并检出分支一样。
为什么在我使用的存储库上不起作用?
我的问题与切换分支时出现致命Git错误有关。
我尝试使用命令获取远程分支
git checkout -b local-name origin/remote-name
但我收到此错误消息:
致命:git checkout:更新路径与切换分支不兼容。
您是否打算签出无法解析为提交的“来源/远程名称”?
如果我手动创建一个分支,然后拉出远程分支,则它的工作原理与创建新克隆并检出分支一样。
为什么在我使用的存储库上不起作用?
Answers:
我相信当您尝试签出本地git repo还不知道的远程分支时会发生这种情况。尝试:
git remote show origin
如果您要检出的远程分支位于“新的远程分支”下,而不是“已跟踪的远程分支”下,则需要先获取它们:
git remote update
git fetch
现在应该可以工作了:
git checkout -b local-name origin/remote-name
git fetch
将从所有远程存储库中获取所有分支。
git remote update
然后您的提取操作才会获取该远程服务器。否则,您会收到类似“ Did you intend to checkout 'upstream-repo/master' which can not be resolved as commit?
将其添加到答案中”这样的消息,并节省了人们宝贵的时间来阅读仅适用于来源的相同答案。
备用语法,
git fetch origin remote_branch_name:local_branch_name
--depth
原始克隆的限定词在这里可能有问题。我成功了,git fetch remote_branch_name:local_branch_name
但所有其他建议都失败了。
在尝试了我可以在该线程中阅读的大部分内容而没有成功之后,我偶然发现了这一点: 远程分支未出现在“ 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/*
绝招
以上都不对我有用。我的情况略有不同,我的远程分支不是起源。但在另一个存储库中。
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 branch -v -a
:我有一个配置错误的遥控器,fetch = +refs/heads/*:refs/remotes/master/*
即使调用了该遥控器,它也会说upstream
。
我怀疑没有名为remote-name的远程分支,但是您无意中创建了一个名为origin / remote-name的本地分支。
您是否可能在某些时候输入了:
git分支的起源/远程名称
从而创建一个名为origin / remote-name的本地分支?输入以下命令:
git checkout来源/远程名称
您将看到:
切换到分支“来源/远程名称”
这意味着它实际上是一个错误命名的本地分支,或者
注意:移至不是本地分支机构的“原点/返工” 如果您想通过此结帐创建新分支,则可以这样做 (现在或以后),再次将-b与checkout命令一起使用。例: git checkout -b
这意味着它确实是一个远程分支。
可以将您的问题链接到另一个SO问题“结帐问题”吗?
即:与以下问题有关的问题:
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]既重命名了分支又重置了新分支的新起点,这被认为是不兼容的。