在使用Git GUI checkout 远程分支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
这是怎么回事?
7条答案
按热度按时间uyto3xhc1#
如果上游分支和本地分支的名称不匹配,就会发生这种情况,这种情况有时会发生,通常是不需要的:
要解决此问题,请运行:
然后,再次运行
git push
时,系统将要求您使用--set-upstream
选项正确设置上游分支。ssgvzors2#
注意!虽然这个答案获得了最多的票数,并且在技术上是正确的,但它表明问题出在
push.default
选项上,而通常真实的问题是本地分支和上游分支的名称之间的意外不匹配。盲目地遵循这个答案中的说明可能会导致您的更改被推到错误的分支!有关安全的快速修复,请参阅https://stackoverflow.com/a/24865780/2279059。为了读者的利益,他们可能会错过最重要的细节,隐藏在评论中:
**这是由于
git config push.default
设置。**它定义了当您输入git push
(see link)时git
的操作。在问题中,显然设置为
simple
(这是git v2
的默认值),可能是这意味着,当本地和远程分支不完全匹配时,
git
拒绝推送。正如@TomSpurling所指出的,上述设置更安全,建议正常使用,因为通常您希望本地和远程分支具有相同的名称。
但是在某些情况下,当您的本地分支正在跟踪具有不同名称的其他远程分支时,您需要更改:
为了允许在每个git的基础上推送到跟踪分支,因此使
git pull
和git push
对称,使用**注意:**要全局设置所有
git
,请使用git config --global push.default upstream
但是,最好将其留给
git config --global push.default simple
,并仅在真正需要的工作负载中设置此选项。bvk5enib3#
您的本地分支名为
rel_5.4.1
,但远程分支名为releases/rel_5.4.1
(就Git而言,/
在分支名称中没有特殊意义,只是为了让它们更容易被人眼阅读)。当你推送的时候,Git会很小心,你是想把你的分支推送到
releases/rel_5.4.1
(远程分支的名字),还是想创建一个新的远程分支。不过,它确实注意到了名字的相似之处。除非您想创建一个新的分支,否则正确的命令是
你也可以用
要一劳永逸地修复此警告,请重命名本地分支以匹配远程名称:
bkhjykvo4#
此错误可以一次性修复,使用:
它更改分支的上游,以匹配正确的远程(再次)。
mf98qq945#
看起来有一个与远程不同的本地分支名称并不是
Git
太喜欢的。您将需要发出:每推一次,
jobtbby36#
您可以使用自己的分支名称代替
new-branch
。yvgpqqbh7#
当我们在特定分支推送数据时遇到上述问题:
在应用修复之前,请确保首先在本地提交和合并数据。使用
git status
检查任何修改的文件等。