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

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


当前回答

我刚刚收到这个错误。

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

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

存储库URL从这里得到的项目github页面:

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

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

然后按:

git push

其他回答

我也得到了同样的错误,但我很容易解决它通过获取其url 作为

git fetch origin Your repository origin

然后简单地应用命令

git push -f origin master

你会得到一个好结果

你需要做的

git branch

如果输出是这样的:

* (no branch)
master

然后做

git checkout master

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

我在一台开发机器上遇到了这个问题。开发部门进展不错,但是 主分支给了我(当git在开发分支上时):

! [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 push也在dev分支上工作得很好。

这也可能是由于在给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*

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