我的问题与切换分支时的致命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]一样,都重命名了分支并重置了新分支的新起点,这被认为是不兼容的。
来源:CSDN
作者:asdfgh0077
链接:https://blog.csdn.net/asdfgh0077/article/details/104085898