混帐推拒绝
我放弃! 每当我试图推动我得到一个愚蠢的:
! [rejected] master -> master (non-fast forward) error: failed to push some refs to 'git@github.com:companyX/projectX.git'
我们的团队有一个新的git设置。 现在,我不使用私人分支,而是使用我们的主存储库(在github上)来创build我自己的副本。
有一点我做的是:
$ 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是我的私有存储库。
所以,我去上游主pipe部门做一些改动,并从“上游主控人员”那里进行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'
任何帮助将grely表示赞赏! 如果你需要澄清请问,我会回复!
在进行推送时,请尝试为上游主机指定refspec:
git push upstream upstreammaster:master
Jarret Hardie是正确的。 或者,首先将您的更改合并回主,然后尝试推送。 默认情况下, git push
推送名称与远程名称匹配的所有分支 – 而不是其他名称。 所以这些是你的两个select – 或者像Jarret那样明确地指定它,或者把它归并到一个共同的分支然后推动。
在Git邮件列表上已经有这样的讨论,很显然,这种行为不会马上改变 – 许多开发人员在他们的工作stream程中依赖这种行为。
编辑/澄清
假设你的upstreammaster
分支已经准备好了,那么你可以这样做:
-
从上游拉任何变化。
$ git pull上游主人
-
切换到我的本地主分支
$ git checkout master
-
从
upstreammaster
合并更改$ git merge upstreammaster
-
推动我的变化
$ git推上游
在推动之前,您可能想要做的另一件事是重新设置对上游/主站的更改,以使您的提交全部在一起。 你可以做上面的#1和#2之间的单独步骤( git rebase upstream/master
),或者你可以把它作为你的一部分拉( git pull --rebase upstream master
)
首先,试图从你试图推动的同样的refspec拉。
如果这不起作用,可以通过使用git push -f <repo> <refspec>
来强制执行git push
,但要小心:此方法可能会导致远程存储库上的引用被删除。
您的存储库是“上游”的裸仓库吗? 我得到了同样的错误,但是当我变成裸露的时候,他们不再发生。