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

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


当前回答

我把布兰奇命名为

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尝试创建一个名称相同但大小写不同的目录

但是系统不区分大小写。

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

其他回答

我把布兰奇命名为

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尝试创建一个名称相同但大小写不同的目录

但是系统不区分大小写。

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

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

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

我也有这个问题,快把我逼疯了。我有一些类似于feature/name的东西,但是git branch -a显示了我feature/name。重命名分支、删除分支和重新创建分支,这些都不起作用。最终解决问题的是:

进入。git/refs/heads

您将看到一个FEATURE文件夹。将其重命名为feature。

你可能创建了类似的分支,但区分大小写不同,那么你必须运行:

git分支-D <name-of-different case-branch>

然后再试着推。

在遇到类似的问题后,我决定张贴对我有用的东西。

我尝试用命令将新的分支推到远程存储库:

git push --set-upstream origin <branch name copied from Git console after navigating to the repository location>

并得到以下状态信息:

warning: redirecting to <myRepositoryAdress>

fatal: <branch> cannot be resolved to branch

首先,我们迁移了Git,我认为这可能是问题所在,但事实并非如此。

实际的问题是:

而不是将分支命名为:bugFix/UserName/BranchName,它在Git控制台上被写成bugFix/UserName/BranchName(注意这里小写的f)。 我通过输入git branch -a并将所有现有的分支与我签出/想要推送的分支进行比较来计算出这一点。控制台是如何出现小写f的,我仍然不知道。当然,如果实际本地分支的名称与您在推送时输入的名称不同,则该名称不能解析为分支!

在我的SmartGit GUI中,提交是在正确的分支上,但我更喜欢控制台和从那里推送,所以SmartGit更像是一个检查本地状态日志的步骤,并比较控制台中是否有一些错误。

我从中学到的是:

如果你的目标只是推送一个本地分支,就不要像一些人在有关这个错误的文章中建议的那样使用git push——all -u。

最好试着弄清楚到底哪里出了问题以及原因。然后寻找解决方案。也许你也有一个拼写错误或一些类似的不一致。