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

Asa*_*a17 192 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.
Run Code Online (Sandbox Code Playgroud)

很多次我得到这个错误,无法弄清楚该怎么做.

小智 150

试试这个: git push -f origin master

  • 不,不要试试这个.从```git help push```:"这可能导致远程存储库丢失提交;请小心使用它." (46认同)
  • 这对我有用.我认为这很好,因为我在github上的唯一提交是使用新的repo创建的.在项目开始后不使用它可能是一个好主意. (12认同)
  • 绝对不要这样做 (7认同)
  • 如果您想更新为交付目的而创建的存储库,这会很有用(因此远程端没有新的更改) (2认同)

pmr*_*pmr 145

正如错误消息所示:git pull在您尝试之前git push.显然,您的本地分支与跟踪分支不同步.

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

  • @AndrewS `git push --force origin master`。如果您在生活中不止一次遇到此类问题,那么您的项目工作流程就会中断。功能应该在分支中开发并合并而不进行快速转发,如果功能“失败”,您应该恢复合并提交(最好在将功能合并到主分支之前先在集成分支中进行测试)。虽然不知道 Eclipse。 (5认同)
  • 如果“git pull origin trunk:master”报告该错误该怎么办? (2认同)

小智 19

git push -f origin master
Run Code Online (Sandbox Code Playgroud)

使用蛮力 ;-) 很可能您正在尝试添加在 git 上创建 repo 之前创建的本地文件夹。

  • 包括此在内的任何答案都应该发出警告。 (3认同)
  • 我尝试了这个,但它花费了我在 GitHub 上的大量提交,我必须从存储库的另一个本地克隆恢复。危险的。 (2认同)

小智 18

这个命令对我很有用

git push -f origin master
Run Code Online (Sandbox Code Playgroud)

  • 使用此命令前请多加注意。通过使用此命令,您将丢失所有过去的提交。 (2认同)

blu*_*sky 13

我刚收到这个错误.

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

git pull https://github.com/*username*/*repository*.git master
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

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

git init
git add .
git commit -m "update"
Run Code Online (Sandbox Code Playgroud)

然后推:

git push
Run Code Online (Sandbox Code Playgroud)

  • 这个答案反映了实际情况. (2认同)

mah*_*mnj 11

我的遥控器与本地不同步,所以这对我有用

git pull --rebase
Run Code Online (Sandbox Code Playgroud)

并确保当您git pull再次执行此操作时,它应该显示已经是最新的,现在您已准备好推送到原点

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

git push origin master
Run Code Online (Sandbox Code Playgroud)

截图说明了一切 在此输入图像描述

或者你可以这样做

  1. git stash(临时存储未提交的工作)
  2. git pull(使本地和远程同步)
  3. git stash pop(取回未提交的更改)
  4. git 推送


Mun*_*f M 9

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

但是在repos中不建议这已经有很多代码,因为这可能会弄乱一切

git push origin master --force
Run Code Online (Sandbox Code Playgroud)


Gup*_*pta 8

警告:

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


Ale*_*kov 7

如果git pull没有帮助,那么可能您已经推动了您的更改(A),之后曾经git commit --amend添加了一些更改(B).因此,git认为您可以丢失历史记录 - 它将B解释为不同的提交,尽管它包含来自A的所有更改.

             B
            /
        ---X---A
Run Code Online (Sandbox Code Playgroud)

如果之后没有人改变回购A,那么你就可以做到git push --force.

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

             B
            /
        ---X---A---C
Run Code Online (Sandbox Code Playgroud)

那么你必须从衍合那些人改变AB(C- > D).

             B---D
            /
        ---X---A---C
Run Code Online (Sandbox Code Playgroud)

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


小智 6

使用此命令:

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

喜欢:

git pull --allow-unrelated-histories origin master

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


小智 5

尝试以下命令:“ git pull origin master”

它为我工作。

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


gte*_*ech 5

这是因为您在母版中做了一些更改,所以项目要求您先拉。如果仍要推动它,可以通过输入以下命令使用蛮力:

git push -f origin master
Run Code Online (Sandbox Code Playgroud)

切记先提交您的更改:

git add .
git commit -m "Your commit message"
Run Code Online (Sandbox Code Playgroud)