被拒绝的主人 - >主人(非快进)

时间:2012-07-27 22:09:24

标签: git push

我正在尝试推送我的项目(所有文件都在新的存储库中)。我按照步骤操作,但当我按下git push -u origin master时,我收到此错误:

! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:asantoya/projectnewbies.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.

我多次遇到此错误,无法弄清楚该怎么做。

22 个答案:

答案 0 :(得分:129)

在您尝试git pull之前,错误消息显示为:git push。显然,您的本地分支机构与您的跟踪分支机构不同步。

根据项目规则和工作流程,您可能还想使用git pull --rebase

答案 1 :(得分:120)

试试这个:git push -f origin master

答案 2 :(得分:14)

git push -f origin master

使用蛮力;-) 您最有可能尝试添加在git上创建存储库之前创建的本地文件夹。

答案 3 :(得分:12)

此命令对我来说效果很好

git push -f origin master

答案 4 :(得分:11)

我刚刚收到此错误。

我在创建了我的本地git存储库之后创建了一个github存储库,因此我需要在推送到github之前接受对本地的更改。在这种情况下,唯一的变化是在创建github存储库时作为可选步骤创建的自述文件。

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

存储库URL是从项目github页面获取的:

enter image description here

然后我重新初始化(可能不需要)

git init
git add .
git commit -m "update"

然后推:

git push

答案 5 :(得分:7)

我在github上创建了新的repo并且我遇到了同样的问题,但是在拉动时它也有问题,所以这对我有用。

  

但在repos中不建议这已经有很多代码   可能搞乱一切

git push origin master --force

答案 6 :(得分:6)

如果git pull无效,那么您可能已推送了更改(A),之后使用git commit --amend添加了更多更改(B)。因此,git认为您可以丢失历史记录 - 它将B解释为不同的提交,尽管它包含来自A的所有更改。

             B
            /
        ---X---A

如果没有人在A之后更改回购,那么您可以执行git push --force

但是,如果其他人A之后发生了变化:

             B
            /
        ---X---A---C

然后你必须将那些人从A更改为BC - > D)。

             B---D
            /
        ---X---A---C

或手动修复问题。我还没想到怎么做。

答案 7 :(得分:5)

警告:

去寻找一个' git pull'并不总是一个解决方案。如果您故意更改了存储库历史记录,则可能会遇到此问题(Q中提到的问题)。在这种情况下,git会将您的历史记录更改与远程仓库中的新更改混淆。因此,您应该选择git push --force,因为调用git pull会故意撤消您对历史记录所做的所有更改。

答案 8 :(得分:5)

使用此命令:

git pull --allow-unrelated-histories <nick name of repository> <branch name>

像:

git pull --allow-unrelated-histories origin master

当项目没有任何共同的祖先时会发生此错误。

答案 9 :(得分:4)

! [拒绝]主人 - &gt;主人(非快进)

不要惊慌,这很容易修复。所有你需要做的就是发出一个拉动,你的分支将是快进的:

$ git pull myrepo master

然后重试你的推动,一切都应该没问题:

$ git push github master

答案 10 :(得分:4)

尝试此命令:“git pull origin master”

它对我有用。

点击此链接:https://help.github.com/articles/dealing-with-non-fast-forward-errors

答案 11 :(得分:3)

你需要做

git branch

如果输出类似于:

* (no branch)
master

然后做

git checkout master

确保您没有任何待处理的提交,因为签出将丢失所有未提交的更改。

答案 12 :(得分:3)

当我在开发分支上时,发生了这种情况,我的主分支没有最新的更新。

所以当我尝试从开发分支git push时,我遇到了这个错误。

我通过切换到master分支,git pull修复它,然后返回开发分支和git push。

$ git fetch && git checkout master
$ git pull
$ git fetch && git checkout develop
$ git push

答案 13 :(得分:3)

这是因为您在主人中做了一些更改,因此项目要求您先拉。无论如何你想推它,你可以输入以下信息来使用蛮力:

git push -f origin master

请记住先提交更改:

git add .
git commit -m "Your commit message"

答案 14 :(得分:2)

我在开发机器上遇到了这个问题。 dev分支正在推进,但是 master分支给了我(在git push分支时dev时:{/ p>

! [rejected]        master -> master (non-fast-forward)

所以我试过了:

git checkout master
git pull

哪位给了我:

You asked me to pull without telling me which branch you
want to merge with, and 'branch.master.merge' in
your configuration file does not tell me, either.

我发现.git/config中缺少主分支并添加了:

[branch "master"]
    remote = origin
    merge = refs/heads/master

之后git pushdev分支上工作正常。

答案 15 :(得分:1)

这也可能是由于给仓库指定名称时出现名称错误引起的。 如果以上任何一个答案都没有用,对我有用:

删除该存储库并创建一个新的存储库,然后再次尝试以下命令:

cd 'Local Directory Path'
git remote add origin *your_git_name.git*
git push -u origin master

如果添加来源显示已存在,请改用此方法:

git remote set-url origin *your_git_name.git*

答案 16 :(得分:0)

尝试一下,就我而言,它可行

git rebase --abort

答案 17 :(得分:0)

这是因为您对其主人进行了相互冲突的更改。并且您的存储库服务器无法通过这些单词告诉您,因此它会出现此错误,因为这不是他处理这些冲突的问题,因此他要求您自己执行此操作。作为?

1- git pull 这会将您的存储库中的代码合并到站点主机的代码中。 因此显示了冲突。

2-对待这些手段冲突。

3-

git push origin master

而且,你的问题已经解决了。

答案 18 :(得分:0)

如果有人在尝试推送到heroku时遇到此错误,则只需将'origin'替换为'heroku' 像这样: git push -f heroku master

答案 19 :(得分:0)

我的遥控器与本地不同步,因此对我有用

git pull --rebase

,并确保当您再次执行git pull时,应该说“已更新” 现在您可以开始尝试了

假设您已经git remote add origin remote repository URL

`git push origin master`  

截图说明了一切 enter image description here

答案 20 :(得分:0)

我和问题一样。 我用Git Tortoise。 Just Right Click - &gt; TortoiseGit - &gt;清理 。 现在你可以推送到Github了 它对我很好:D

答案 21 :(得分:0)

唯一能够解决此问题的是删除本地和git repo并在两端再次创建相同的内容。现在工作正常。