混帐推拒绝

我放弃! 每当我试图推动我得到一个愚蠢的:

! [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分支已经准备好了,那么你可以这样做:

  1. 从上游拉任何变化。

    $ git pull上游主人

  2. 切换到我的本地主分支

    $ git checkout master

  3. upstreammaster合并更改

    $ git merge upstreammaster

  4. 推动我的变化

    $ git推上游

在推动之前,您可能想要做的另一件事是重新设置对上游/主站的更改,以使您的提交全部在一起。 你可以做上面的#1和#2之间的单独步骤( git rebase upstream/master ),或者你可以把它作为你的一部分拉( git pull --rebase upstream master

首先,试图从你试图推动的同样的refspec拉。

如果这不起作用,可以通过使用git push -f <repo> <refspec>来强制执行git push ,但要小心:此方法可能会导致远程存储库上的引用被删除。

您的存储库是“上游”的裸仓库吗? 我得到了同样的错误,但是当我变成裸露的时候,他们不再发生。

首先使用

git pull https://github.com/username/repository master

然后尝试

git push -u原点大师