我从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

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


当前回答

我在windows系统中也遇到了同样的问题。使用 Git checkout -b your-new-branch从你当前的分支并推送到远程,然后你可以在两个分支中找到提交。

其他回答

我把布兰奇命名为

Rel4.6 /错误/ Some-short-description

我所要做的就是在使用的时候

git push origin Relx.x/bug/Some-short-description

git push origin relx.x/bug/Some-short-description

就像我过去在rel中使用小写字母r创建分支一样。

那么,是什么导致了这个问题?

当我列出。git/refs/heads内容时,我找到了

drwxr-xr-x  4 eslam_khoga  staff   128B Sep 22 20:22 relx.x

但是不要放松!

里面还有我分行的名字。

因此,git尝试创建一个名称相同但大小写不同的目录

但是系统不区分大小写。

这就是导致这个问题的原因!

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

我在windows系统中也遇到了同样的问题。使用 Git checkout -b your-new-branch从你当前的分支并推送到远程,然后你可以在两个分支中找到提交。

如果你使用的是Omegaman/BugFix这样的文件夹,请确保案例是正确的。似乎你可以签出一个现有的分支作为小写omegaman/BugFix并尝试推送,它会失败。

用正确的外壳重新检出,如git检出Omegaman/BugFix来解决。

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