74

我有这个奇怪的问题,每当我这样做时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

Update2:解决git config remote.origin.push HEAD了以下行出现在.git/config部分[remote "origin"]

    push = HEAD

更新3:

$ 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.
4

5 回答 5

132

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

git config remote.origin.push HEAD

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

于 2012-10-23T14:59:43.930 回答
37

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

于 2013-08-23T14:01:49.663 回答
10

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

git push origin master

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

于 2012-10-23T12:52:17.337 回答
3

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

当在 git 配置中指定了其中的 2 个时,git 可以安全地不假设其中一个,即使后者定义的应该覆盖前者。

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

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

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

您可以删除或注释掉branchgit 全局配置中的部分,您应该一切顺利。

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

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

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

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

有了这个,当你git push在主分支上做的时候,你不应该得到多个上游分支错误。

git remote show origin也不应该再引起警告。

于 2018-12-13T00:38:17.047 回答
1

好吧,在用全新的 repos 处理了两次之后,我有了一个答案。

git 远程 -v

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

git 远程 rm 起源

!警告:不止一个 b​​ranch.master.remote <-- 这很好

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

拉 + 推 = 固定

于 2015-01-31T18:51:24.640 回答