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

fir*_*dev 65 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
Run Code Online (Sandbox Code Playgroud)

UPDATE2:与解决git config remote.origin.push HEAD下面一行出现在.git/config[remote "origin"]节:

    push = HEAD
Run Code Online (Sandbox Code Playgroud)

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.
Run Code Online (Sandbox Code Playgroud)

Pet*_*oes 111

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

git config remote.origin.push HEAD
Run Code Online (Sandbox Code Playgroud)

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

  • `git push` 默认将所有分支推送到远程,通过添加你告诉 git 只推送你所在的分支的配置。也许你得到的错误信息是错误的,我的意思是分支名称错误(master),也许还有其他分支导致了这个问题。如果以前版本的 git 从来没有遇到过这个问题,这可能意味着存在回归问题。 (2认同)

mmu*_*lis 32

运行git config -l并查看是否有多行包含branch.master*references可以复制[branch"master"]部分~/.gitconfig.git/config. 删除~/.gitconfig固定多个上游分支检测的部分.

  • 不确定它是如何发生的,但我有 `branch.master.remote=origin` 和 `branch.master.merge=refs/heads/master` _exactly_ 在 `.git/config` 中重复了两次......删除重复已解决这个问题。 (2认同)
  • 在本地重命名并将新名称推向上游后,我的一个分支最终遇到了类似的问题。我的 .git/config 文件有两个条目。就像卢卡斯建议的删除重复项可以解决这个问题。 (2认同)

red*_*nzz 10

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

git push origin master
Run Code Online (Sandbox Code Playgroud)

并且还要协调更改,git pull这将使用服务器更新本地引用.