! [rejected] master -> master (non-fast forward)
error: failed to push some refs to 'git@github.com:companyX/projectX.git'
我们的团队有一个新的git设置。我现在将主存储库(在github上)分叉,而不是创建私有分支,以创建我自己的副本。
在某些时候,我所做的是:
$ git fetch upstream master:upstreammaster
所以这是我目前的设置::
$ git branch
master
* upstreammaster
$ git remote -v
origin git@github.com:userX/projectX.git
upstream git@github.com:companyX/projectX.git
其中userX是我的私人存储库。
所以我去对我的upstreammaster分支进行一些更改,并从“上游主服务器”进行PULL。 一切都融合了:
$ git pull upstream master
remote: Counting objects: 95, done.
remote: Compressing objects: 100% (60/60), done.
remote: Total 60 (delta 54), reused 0 (delta 0)
Unpacking objects: 100% (60/60), done.
From git@github.com:companyX/projectX
* branch master -> FETCH_HEAD
Merge made by recursive.
stuff | 165 ++++++++++++--------
stuff | 35 ++--
stuff | 107 ++++++++++---
stuff | 105 ++++++++++---
stuff | 24 ++--
stuff | 9 +-
stuff | 53 +++----
stuff | 44 +++---
stuff | 52 +++----
stuff | 32 +----
stuff | 4 +-
stuff | 138 ++++++++---------
stuff | 58 ++++----
stuff | 115 ++++++++------
stuff | 5 +-
stuff | 39 ++---
stuff | 28 ++--
17 files changed, 560 insertions(+), 453 deletions(-)
但是当我尝试做的时候:
$ git push upstream master
To git@github.com:companyX/projectX.git
! [rejected] master -> master (non-fast forward)
error: failed to push some refs to 'git@github.com:companyX/projectX.git'
任何帮助都会非常感激!如果您需要澄清请询问,我会回复!
答案 0 :(得分:19)
执行推送时,请尝试为上游主服务器指定refspec:
git push upstream upstreammaster:master
答案 1 :(得分:16)
Jarret Hardie是对的。或者,首先将您的更改合并回master,然后尝试推送。默认情况下,git push
会推送名称在遥控器上匹配的所有分支 - 而不是其他分支。所以这些是你的两个选择 - 要么像Jarret那样明确地指定它,要么合并回公共分支然后推送。
在Git邮件列表上已经讨论过这个问题,很明显这种行为不会很快改变 - 许多开发人员在他们的工作流程中依赖这种行为。
修改/澄清强>
假设您的upstreammaster
分支已准备就绪,那么您可以这样做:
从上游引入任何更改。
$ git pull upstream master
切换到我的本地主分支
$ git checkout master
合并upstreammaster
$ git merge upstreammaster
推送我的更改
$ git push upstream
在推送之前可能想要做的另一件事是rebase
您对上游/主人的更改,以便您的提交全部在一起。您可以将其作为上述#1和#2之间的单独步骤(git rebase upstream/master
),也可以将其作为拉动的一部分(git pull --rebase upstream master
)
答案 2 :(得分:13)
首先,尝试从您尝试推送的相同refspec中提取。
如果这不起作用,您可以使用git push
强制git push -f <repo> <refspec>
,但要小心:此方法可能导致在远程存储库中删除引用。
答案 3 :(得分:10)
首次使用
git pull https://github.com/username/repository master
然后尝试
git push -u origin master
答案 4 :(得分:3)
您的存储库在“上游”是裸存储库吗?我得到了同样的错误,但当我改为裸露时,他们就不再发生了。
答案 5 :(得分:2)
实际上我遇到了相同的错误,但是以下注释对我有用
git push -f origin master
答案 6 :(得分:1)
如果没有任何效果,请尝试:
git pull --allow-unrelated-histories <repo> <branch>
然后做:
git push --set-upstream origin master
答案 7 :(得分:0)
如果推送请求显示为已拒绝,则首先尝试从您的github帐户中提取,然后尝试推送。
例如:
就我而言,它给出了一个错误-
//css code here
.input[type=text]{
width:100%;
border:2px solid #aaa;
border-radius:4px;
margin:8px 0;
outline:none;
padding:8px;
box-sizing:border-box;
transition:.3s;
}
.inputWithIcon{
position:relative;
}
.inputWithIcon i{
position:absolute;
right: 3%;
top: 0;
font-size: 25px;
padding: 20px 8px;
color:#c69937;
transition:.3s;
}
****所以我做的是-****
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'https://github.com/ashif8984/git-github.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
并且代码已成功推送到我的Github帐户中。