我有这个奇怪的问题,每当我做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.
答案 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
也不应再发出警告。