我从Bitbucket或Github迁移了我的回购。我认为这无关紧要,但这是唯一不同的地方。有一段时间,我设置了两个遥控器:

origin: bitbucket
github: github

然后我删除了这两个,并指向github的起源:

git remote remove origin
git remote remove github
git remote add origin https://github....

开发部门测试推送:

git push origin develop

一切都是最新的,很好。

像往常一样为一些工作创建一个新分支:

git checkout -b Feature/Name

更新一两个文件。尝试推送到远程:

git push origin Feature/Name

这导致了错误:

致命:特征/名称不能解析到分支

在网上搜索这个问题,找到一些关于确保HEAD是正确的,其他关于确保我的分支名称大小写是正确的(尽管,此时远程上还不存在分支)。无法解决。

执行如下命令:

git push --all -u

这让我的功能/名称分支到github,但仍然看到相同的行为之前:

git push origin develop
git push origin Feature/Name

第一个可以工作,而第二个抛出相同的错误。为什么?


当前回答

类似的事情也发生在我身上。我创建了一个名为“Feat/name”的分支。 我试着用:

git push——set-upstream origin Feat/name

我和你犯了同样致命的错误

致命:专长/名字不能解析到分支

为了解决这个问题,我创建了一个新的分支,因为我只有很少的文件受到影响。然后我列出了我的分支来删除错误的分支,它显示没有上限:

壮举/名称

我以前用过大写,但从来没有在第一个字符上用过。看起来git不喜欢它…

其他回答

对我来说,问题在于我将git和macOS文件系统设置为两种不同的大小写敏感性。我的Mac被格式化为APFS/Is Case-Sensitive: NO,但我在某些时候翻转了我的git设置,试图克服Xcode图像资产命名的奇怪问题,所以git配置-global core。ignorecase假。把它翻转回来,调整设置,重新创建分支,然后按一下,让我回到正轨。

git config --global core.ignorecase true

Credit: Git是大小写敏感的,你的文件系统可能不会-奇怪的文件夹合并在Windows上

根据我自己的测试和OP的评论,我认为在某些时候他们在分支名称的外壳上做了一些傻事。

首先,我认为OP是在OS X或Windows等不区分大小写的操作系统上。然后他们做了这样的事情……

$ git checkout -b SQLMigration/ReportFixes
Switched to a new branch 'SQLMigration/ReportFixes'

$ git push origin SqlMigration/ReportFixes
fatal: SqlMigration/ReportFixes cannot be resolved to branch.

注意套管的不同。还要注意,这个错误与您只是键入名称时的错误非常不同。

$ git push origin SQLMigration/ReportFixme
error: src refspec SQLMigration/ReportFixme does not match any.
error: failed to push some refs to 'git@github.com:schwern/testing123.git'

因为Github使用文件系统来存储分支名称,所以它会尝试打开.git/refs/heads/SqlMigration/ReportFixes。因为文件系统是不区分大小写的,它成功地打开了.git/refs/heads/SqlMigration/ReportFixes,但是当它尝试区分大小写比较分支名称时,它们不匹配时就会感到困惑。

How they got into a state where the local branch is SQLMigration/ReportFixes and the remote branch is SqlMigration/ReportFixes I'm not sure. I don't believe Github messed with the remote branch name. Simplest explanation is someone else with push access changed the remote branch name. Otherwise, at some point they did something which managed to create the remote with the typo. If they check their shell history, perhaps with history | grep -i sqlmigration/reportfixes they might be able to find a command where they mistyped the casing.

我也有这个问题,我的正常分支开始于pb-3.1-12345/namebranch,但我意外地大写了前2个字母PB-3.1/12345/namebranch。在重命名分支以使用小写字母之后,我可以创建分支。

在我的例子中,原因是正确的分支名称是大写的,但在push命令中指定的分支名称是小写的。

$ git branch --contains=HEAD

上面的命令将告诉您正确的分支名称,因此按下它。

知道分支字母是区分大小写的,这就是我面对的,我试着按“header”而不是“header”