Git:致命:当前的分支主机有多个上游分支,拒绝推送

时间:2012-10-23 12:45:39

标签: git

我有这个奇怪的问题,每当我做git push时它拒绝做任何事情:

fatal: The current branch master has multiple upstream branches, refusing to push.

当我git push -u origin master时,它似乎将其设置为跟踪分支:

Branch master set up to track remote branch master from origin.

但是下次我尝试git push时它拒绝再次这样做。我试图谷歌,但似乎问题是相当新的,我找不到任何解释这种行为。想法?

更新: ./git/config

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = gitosis@xxxx.xx:milk.git
[branch "master"]
    remote = origin
    merge = refs/heads/master

更新2:使用git config remote.origin.push HEAD解决了.git/config[remote "origin"]部分中显示的以下行:

    push = HEAD

UPDATE3:

$ git branch -vv
  billing      633c796 [origin/billing: behind 889] links
* master       1a0de50 [origin/master: ahead 1] more fixes
  new_master   3b880d7 [origin/new_master] branches diverged
  photo_stacks 29c8f0d [origin/photo_stacks] 1st try
  responsive   1dad980 [origin/responsive] update

$ git push
fatal: The current branch master has multiple upstream branches, refusing to push.

5 个答案:

答案 0 :(得分:111)

您可能需要执行以下操作:

git config remote.origin.push HEAD

在主分支上不带任何参数的推送可能会导致您的错误消息。我不确定这是否是回归问题,或者情况是否总是这样。

答案 1 :(得分:32)

运行git config -l并查看是否有多行包含branch.master *引用 [branch“master”]部分可能会重复~/.gitconfig.git/config. 删除~/.gitconfig中的那个为我修复了多个上游分支检测。

答案 2 :(得分:10)

您必须指定要推送的分支。 git push会自动尝试推送本地分支正在跟踪的所有引用和标记。服务器上的在线分支可能已向前发展。因此,您可能会遇到这种情况。你应该只使用

git push origin master

并且还要协调更改执行git pull这将使用服务器中的更新来更新本地引用。

答案 3 :(得分:1)

好吧,在用全新的回购纸处理这两次之后我得到了答案。

git remote -v

git remote rm(如果您添加了任何其他遥控器,则除了原点以外的所有内容)

git remote rm origin

!警告:多个branch.master.remote< - 这很好

git remote add origin git@github.com:yourname/ yourrepo

pull + push = FIXED

答案 4 :(得分:0)

很可能是因为您的git配置中有2个或更多branch.master.remote。一个来自全局git配置,另一个来自本地repo git配置。

当git配置中指定了其中的2个时,即使后一个定义应覆盖前者,git也可以保证不承担任何一个。

您克隆的现代存储库应在本地包含配置,但您的全局git配置也很有可能也定义了branch.master.remote

要检查是否在全局配置中进行了设置,请使用:

git config --global --list | grep branch.master

您可以在git全局配置中删除branch部分或将其注释掉,这应该很好。

git config --global --remove-section branch.master

这将完全删除[branch "master"]部分。

如果您想将其保留在全局配置中以防万一,可以将其重命名为您可能不会使用的其他分支。

git config --global --rename-section branch.master branch.someothername

有了这个,当您在主分支上执行git push时,不应出现多个上游分支错误。

git remote show origin也不应再发出警告。