我从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不喜欢它…

其他回答

如果你有另一个看起来相似的分支,试着重新命名你的分支。

我认为GitHub文件系统有点纠结于相同的分支名称,如果它们区分大小写的话。在我的例子中,我在服务器上有一个这样的分支,

Feature/Settings/Billing

过了一段时间,我试图发布另一个类似的分支,

Feature/Settings/Billing-After-Revamp

然后我得到了一个致命的错误,然后我重命名了新的分支,如下所示,

Feature/Settings/After-Revamp-Billing

它就像一个魅力,我能够成功地发布我的分支没有致命的错误,如上述。

根据我自己的测试和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.

尝试这个错误:(feature/test是本地分支名称)

Git分支——set-upstream-to=origin/feature/test feature/test

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

git config --global core.ignorecase true

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

我在Windows 10中通过使用cmd而不是GitBash解决了这个问题。

这与字符大小写以及git和命令行如何处理它们有关。