当前位置:  开发笔记 > 运维 > 正文

git push拒绝了

如何解决《gitpush拒绝了》经验,为你挑选了4个好方法。

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

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

任何帮助都会非常感激!如果您需要澄清请询问,我会回复!



1> Jarret Hardi..:

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

git push upstream upstreammaster:master


@Jarret:这对我不起作用.我的代码$ git push git@github.com:user/repo.git git@github.com:user/repo.git:master.

2> Pat Notz..:

Jarret Hardie是对的.或者,首先将您的更改合并回master,然后尝试推送.默认情况下,git push推送名称在遥控器上匹配的所有分支 - 而不是其他分支.所以这些是你的两个选择 - 要么像Jarret那样明确地指定它,要么合并回公共分支然后推送.

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

编辑/澄清

假设您的upstreammaster分支已准备就绪,那么您可以这样做:

    从上游引入任何更改.

    $ git pull upstream master

    切换到我的本地主分支

    $ git checkout master

    合并来自的变化 upstreammaster

    $ git merge upstreammaster

    推动我的更改

    $ git push upstream

在推送之前您可能想要做的另一件事是rebase对上游/主控的更改,以便您的提交全部在一起.您可以将其作为上述(git rebase upstream/master)的#1和#2之间的单独步骤,或者您可以将其作为pull(git pull --rebase upstream master)的一部分来执行



3> user2368055..:

首次使用

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

然后试试

git push -u origin master



4> Rob Watson..:

首先,尝试从您尝试推送的相同refspec中提取.

如果这不起作用,您可以强制git push使用git push -f ,但要小心:此方法可能导致在远程存储库上删除引用.

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有