我试图推动我的项目(所有文件在一个新的存储库)。我遵循这些步骤,但当我用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.

我得到这个错误很多次,不知道该怎么做。


当前回答

这也可能是由于在给Repo命名时引起的一些名称错误造成的。 如果上面的任何一个答案都不起作用,下面这个对我来说是有效的:

删除该repo并创建一个新的repo,并再次尝试以下命令:

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

如果add origin显示已经存在,则使用以下方法:

git remote set-url origin *your_git_name.git*

其他回答

你需要做的

git branch

如果输出是这样的:

* (no branch)
master

然后做

git checkout master

确保没有任何挂起的提交,因为签出会丢失所有未提交的更改。

如果有人在尝试推到heroku时出现此错误,则只需将“origin”替换为“heroku” 是这样的: Git push -f heroku master

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

             B
            /
        ---X---A

如果A之后没人改变回购,你可以使用git push -force。

但是,如果A后面有其他人的变化:

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

那么你必须将人从A变到B (C->D)。

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

或者手动修复问题。我还没想过该怎么做。

警告:

去“git拉”并不总是一个解决方案,所以要小心。如果您有意更改了存储库历史,您可能会面临这个问题(在Q中提到的问题)。在这种情况下,git会混淆远程回购中的历史更改和新更改。所以,你应该使用git push -force,因为调用git pull会撤销你故意对历史记录所做的所有更改。

这是因为您对它的主人进行了相互冲突的更改。你的存储库服务器不能用这些词告诉你,所以它给出了这个错误因为这不是他为你处理这些冲突的问题,所以他让你自己去做。是吗?

1- git拉 这将把您的代码从存储库合并到站点管理员的代码。 所以冲突就显现出来了。

2-处理这些手册冲突。

3-

git push origin master

瞬间,你的问题就解决了。