64

我放弃!每当我尝试推动时,我都会变得愚蠢:

! [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 分支和“upstream master”的 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'

任何帮助将不胜感激!如果您需要澄清,请询问,我会回复!

4

8 回答 8

27

进行推送时,请尝试为上游主服务器指定 refspec:

git push upstream upstreammaster:master
于 2009-03-06T20:31:25.237 回答
18

杰瑞特哈迪是正确的。或者,首先将您的更改合并回主服务器,然后尝试推送。默认情况下,git push推送所有名称与远程匹配的分支——而不是其他分支。所以这是你的两个选择——要么像 Jarret 所说的那样明确指定它,要么合并回一个公共分支,然后推送。

Git 邮件列表上已经讨论过这个问题,很明显这种行为不会很快改变——许多开发人员在他们的工作流程中依赖这种行为。

编辑/澄清

假设您的upstreammaster分支已准备好推送,那么您可以这样做:

  1. 从上游拉入任何更改。

    $ git pull 上游大师

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

    $ git结账大师

  3. 合并从upstreammaster

    $ git 合并上游管理员

  4. 推动我的改变

    $ git 向上游推送

在推送之前您可能想要做的另一件事是rebase针对上游/主服务器的更改,以便您的提交全部在一起。您可以将其作为上述 #1 和 #2 之间的单独步骤(git rebase upstream/master),也可以作为拉动的一部分(git pull --rebase upstream master

于 2009-03-06T23:47:12.397 回答
13

首次使用

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

然后尝试

git push -u origin master
于 2014-02-18T13:03:59.970 回答
12

首先,尝试从您尝试推送到的同一个 refspec 中提取。

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

于 2009-03-06T20:37:01.403 回答
7

实际上我得到了同样的错误,但下面的评论对我有用

git push -f origin master
于 2020-07-26T14:06:01.280 回答
3

您位于“上游”的存储库是裸存储库吗?我遇到了同样的错误,但是当我改为裸机时,它们不再发生。

于 2011-06-22T09:52:23.560 回答
2

如果没有任何效果,请尝试:

git pull --allow-unrelated-histories <repo> <branch>

然后做:

git push --set-upstream origin master
于 2019-09-18T02:33:32.257 回答
0

如果推送请求显示被拒绝,请先尝试从您的 github 帐户中拉取,然后再尝试推送。

前任:

就我而言,它给出了一个错误-

 ! [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.

****所以我所做的是-****

$ git pull
$ git push

并且代码已成功推送到我的 Github 帐户中。

于 2018-08-26T07:23:29.743 回答