如何修复git push时出现的“无法解析为分支”的问题?

27

当我运行 git status 命令时,会显示当前所在的分支:

$ git status
On branch OfflineLoading

当我尝试执行git push时,我遇到了以下错误:

When I tried to git push, I get:

$ git push origin OfflineLoading
fatal: OfflineLoading cannot be resolved to branch.

当我检查分支时,它不在那里:

$ git branch
   branch1
   branch2
   branch3
   branch4

我该如何修复这个问题?


你创建并切换到了新分支吗?这个链接可能会有帮助:https://dev59.com/z2fWa4cB1Zd3GeqPcwjo - Hime
1
我猜你可能在拼写或大小写方面出了一些错误。理想情况下,如果远程分支不存在,它应该创建远程分支,如果存在,则将其推送到远程分支。你的命令看起来是正确的。 - Pankaj Singhal
我检查了拼写,它是正确的。我需要设置上游吗? - Matt Kuhns
1
你能发布 git show-ref | grep -i OfflineLoading 的输出吗? - Yuri G.
1
你是如何创建这个名为 OfflineLoading 的分支的?具体来说,你是否使用了 git checkout --orphan 命令? 如果是这样,那么问题就出在这里:孤立分支只有在你向其中提交了内容后才会真正被创建。如果不是这样,那么你的电脑或者代码库中可能存在严重问题。 - torek
显示剩余4条评论
9个回答

39

常见问题是大小写错误。我以前也遇到过同样的问题。更好的方法是检查分支名称:

$ git branch
  master
 *branch1
  Branch2

你可以将上面的分支进行比较,然后使用你得到的名称推送它。

$ git push origin Branch2
或者
$ git push origin branch1

10
除了Kyle的答案之外,
在这种情况下,如果您已经有一个名为"BugFix/item001"的分支并将其推送到您的存储库中,然后您创建了另一个名为"Bugfix/item002"的分支,即使您尝试使用正确大小写推送分支,仍将收到相同的错误。我认为这是因为"BugFix"文件夹已经被创建,未来的分支将使用相同的文件夹。
这仍然是大小写错误,但实际上具有误导性。

正确的答案。我的解决方案是将旧分支重命名为其他名称,然后再将它们重命名回来。这是由于“git大小写敏感性”问题引起的。 - DawnSong
正是我的情况,建议的解决方法起作用了。 - SwissNavy

3

我的分支名是 feature/S212121_TestCase_review_Dashboard

当我尝试使用以下命令将代码推送到该分支 feature/S212121_TestCase_review_Dashboard 时:

git push origin feature/S212121_TestCase_review_Dashboard
fatal: feature/S212121_TestCase_review_Dashboard cannot be resolved to branch

我使用以下命令重命名了我的分支:

git branch -m TestCase_review_CWLA_Dashboard

之后我使用了以下命令来推送代码:

git push --set-upstream origin TestCase_review_CWLA_Dashboard

这适用于我,我能够将代码推送到分支。


这对我有效,谢谢! - José Veliz

1
当你分支名称中包含大写字母时,就会出现这种情况,因为分支名称是区分大小写的。因此,转到 .git->refs->heads,然后你可以看到你的分支,从当前分支名称中删除大写字母,问题就解决了。

这是真正的答案 - REdim.Learning

1
可能是因为你不在最新的主分支上。 为此,您可以使用终端命令检查主分支。
git pull  

或者

git pull origin (master branch)

"我查看了你的分支。"

我创建了一个新的分支

git checkout -b newbranch 

使用以下命令,将旧分支推送到新分支,并解决“无法解析”的错误:

git push origin newbranch 

这对我有效。


1

有时候,您可能会错误地检出了一个错误的分支,在同一错误的分支上提交并进行推送。在我的情况下,我有一个名为 questionbank 的分支,错误地检出了 questionBank(注意大写'B'),然后我进行了提交,Git 允许它一直到我想要进行推送的时候。

解决方法是检出正确的分支(在我的情况下是 "questionbank"),对代码进行一些更改(只是为了让 Git 允许您进行提交),然后进行提交,然后推送就可以正常工作了。


0

对于我来说,检出到新分支并再次推送是有效的。 git checkout -b 2020-08-05/OfflineLoading git push


0

不是理想的解决方案,但对我有效:

切换到不同的分支(比如说:'branch2'),然后再切换回你的特性分支,尝试推送到远程。


0

我需要进行一些小改动,然后再次提交并推送,这样就可以了!


1
你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接