被拒绝的大师>主(non-fast-forward)

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

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

476569 次浏览

正如错误信息所说:git pull在你尝试git push。显然,您的本地分支与跟踪分支不同步。

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

我唯一能够解决这个问题的是删除本地和git回购,并在两端重新创建相同的。目前还好。

注意:这从来不是git的推荐用法。这将覆盖远程上的更改。只有在100%确定本地更改应该推送到远程主服务器时才这样做。

⚠️试试这个:git push -f origin master

你需要做的

git branch

如果输出是这样的:

* (no branch)
master

然后做

git checkout master

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

我刚刚收到这个错误。

我创建了一个github存储库后,创建我的本地git存储库,所以我需要在推送到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

! master -> master(非快进)

不要惊慌,这很容易解决。你所要做的就是发出一个拉,你的分支就会快进:

$ git拉myrepo master

然后重试你的推送,一切都会好起来的:

$ git推github master

试试这个命令:"git pull origin master"

这对我很管用。

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

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

             B
/
---X---A

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

然而,如果在A之后有来自other person的变化:

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

那么你必须将person从A更改为B (C->D)。

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

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

我在开发机器上遇到了这个问题。dev分支推得很好,但是 master分支给了我(当在dev分支上时git pushing):

! [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分支上也能正常工作。

我也有同样的问题。 我使用Git Totoise。 右击->TotoiseGit ->清理。 现在你可以推送到Github了 D

我在github创建了新的回购,我有同样的问题,但它也有问题,而拉,所以这为我工作。

,但在已经有很多代码的回购中不建议这样做 会把一切都搞砸

git push origin master --force

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

< p > 1 - git pull 这将把您的代码从存储库合并到站点管理员的代码。

2-处理这些手册冲突。

3 -

git push origin master

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

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

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

我通过切换到主分支,git拉,然后回去开发分支和git推来修复它。

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

警告:

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

使用该命令:

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

如:

git pull --allow-unrelated-histories origin master

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

这是因为你在master中做了一些更改,所以项目要求你先拉。如果你想推它,你可以输入以下命令使用蛮力:

git push -f origin master

记得先提交你的修改:

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

我的遥控器不与本地同步,所以这对我来说很有效

git pull --rebase

并确保当你再次执行git pull时,它应该说Already up to date 现在你已经准备好推到原点

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

git push origin master
屏幕截图说明了一切 enter image description here < / p >

或者你也可以这样做

  1. Git存储(暂时存储未提交的工作)
  2. Git pull(使本地和远程同步)
  3. Git stash pop(返回你未提交的更改)
  4. git推
如果有人在尝试推送heroku时出现此错误,则只需将'origin'替换为'heroku' 是这样的: Git push -f heroku master

试试这个,对我来说很管用

git rebase --abort

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

我也得到了同样的错误,但我很容易通过获取其url来解决它 < / p >

git fetch origin Your repository origin

然后简单地应用命令

git push -f origin master

你会得到一个好结果

这意味着您的远程git存储库配置为denyNonFastforwards = true。虽然很危险,但有时你可能真的需要覆盖git历史记录(例如在运行bfg --strip-blobs-bigger-than 100M之后),因此你可以临时修改该设置为false (denyNonFastforwards = true,在your-repository.git/config中见),然后强制推(即git push -f)。

有时候,Git无法在不丢失提交的情况下对远程存储库进行更改。简单地说,这可能是因为您的提交丢失了,或者其他人试图推送到与您相同的分支。 为了解决这个问题,首先进行一个pull request

$ git pull origin YOUR_BRANCH_NAME

$ git pull --rebase origin master