致命的:当前分支的上游分支与当前分支的名称不匹配

时间:2014-07-21 12:05:54

标签: git push remote-branch

在使用Git GUI签出远程分支releases/rel_5.4.1后,当我尝试push时,我发现此意外错误消息:

fatal: The upstream branch of your current branch does not match
the name of your current branch.  To push to the upstream branch
on the remote, use

    git push origin HEAD:releases/rel_5.4.1

To push to the branch of the same name on the remote, use

    git push origin rel_5.4.1

我不知道Git在说什么。我可能想要推送到origin releases/rel_5.4.1,因为那是我检查过的分支。所以这两种选择对我来说都不正确。

git status说我在分行rel_5.4.1上。

以下是.git/config中显示的分支:

[branch "rel_5.4.1"]
    remote = origin
    merge = refs/heads/releases/rel_5.4.1

发生了什么事?

5 个答案:

答案 0 :(得分:55)

为了可能错过最重要细节的读者的利益,这些细节隐藏在评论中:

这是由git config push.default设置引起的。它定义了gitsee link)时git push的作用。

在问题中,显然设置设置为simple(这是git v2的默认设置),可能是

git config --global push.default simple

这意味着,当本地和远程分支不完全匹配时,git拒绝推送。要允许推送到跟踪分支,因此使git pullgit push对称,请使用

git config --global push.default upstream

注意:离开--global,只需更改当前(本地)git存储库的设置。

答案 1 :(得分:34)

您的本地分支名为rel_5.4.1,但远程分支为releases/rel_5.4.1(就Git而言,/在分支名称中没有特殊含义,只是为了使它们更容易为人眼阅读。

当您推送时,Git是否要将您的分支推送到releases/rel_5.4.1(远程分支的名称)或是否要创建新的远程分支。但它确实注意到名称的相似性。

除非您想创建新分支,否则正确的命令是

git push origin HEAD:releases/rel_5.4.1

您也可以使用

git push origin rel_5.4.1:releases/rel_5.4.1

要一劳永逸地修复警告,请重命名本地分支以匹配远程名称:

git branch -m releases/rel_5.4.1

答案 2 :(得分:21)

此错误可以修复一次,只需:

git branch releases/rel_5.4.1 -u origin/releases/rel_5.4.1

它改变了分支的上游,以匹配正确的遥控器(再次)。

答案 3 :(得分:10)

在我的情况下,git branch --unset-upstream解决了这个问题。

答案 4 :(得分:2)

似乎有一个与远程不同的本地分支名称不是Git喜欢的太多。您需要发出:

git push origin HEAD:releases/rel_5.4.1

每次推送都明确