在使用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
发生了什么事?
答案 0 :(得分:55)
为了可能错过最重要细节的读者的利益,这些细节隐藏在评论中:
这是由git config push.default
设置引起的。它定义了git
(see link)时git push
的作用。
在问题中,显然设置设置为simple
(这是git v2
的默认设置),可能是
git config --global push.default simple
这意味着,当本地和远程分支不完全匹配时,git
拒绝推送。要允许推送到跟踪分支,因此使git pull
和git 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
每次推送都明确