拒绝主 – >主(非快进)

我试图推动我的项目(所有文件在一个新的存储库)。 我遵循的步骤,但是当我推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 (eg 'git pull') before pushing again. See the 'Note about fast-forwards' section of 'git push --help' for details. 

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

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

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

试试这个: git push -f origin master

我刚收到这个错误。

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

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

仓库URL从这里得到在项目github页面:

在这里输入图像说明

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

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

然后推:

 git push 

! [拒绝]主 – >主(非快进)

不要惊慌,这是非常容易解决的。 所有你需要做的是发出一个拉,你的分支将是快速的:

$ git pull myrepo master

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

$ git push github master

如果git pull没有帮助,那么可能你已经推动你的更改(A),之后使用git commit --amend来添加更多的更改(B)。 因此,git认为你可能会失去历史 – 它将B解释为一个不同的提交,尽pipe它包含了A的所有变化。

  B / ---X---A 

如果没有人更改A后的回购,那么你可以做git push --force

但是,如果A从他人那里改变了:

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

那么你必须改变从AB变化( C – > D )。

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

或手动解决问题。 我还没有想过如何去做。

我已经在github中创build了新的回购,而且我也遇到了同样的问题,但是在回收时也有问题,所以这对我有用。

但是这不build议在repos已经有很多代码,因为这可能会搞砸了一切

 git push origin master --force 

关键是要去做“混帐”并不总是一个解决scheme。 如果您有意更改存储库历史logging,也可能会遇到此问题。 在这种情况下,git将您的历史更改与远程回购中的新更改混淆在一起。 所以,你应该去做一个git push --force ,因为调用git pull将故意地撤销你对历史的所有修改。

试试这个命令:“git pull origin master”

它为我工作。

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

你需要做的

 git branch 

如果输出是这样的:

 * (no branch) master 

然后做

 git checkout master 

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

我在开发机器上遇到了这个问题。 dev部门推动正常,但master分支给了我(而当git pushdev分支):

 ! [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 pull --allow-unrelated-histories <nick name of repository> <branch name>

喜欢:

git pull --allow-unrelated-histories origin master

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

唯一我能解决这个问题是删除本地和git回购,并在两端再次创build相同。 现在工作良好。

当我在开发分支和我的主分支没有与最新的更新时发生在我身上。

所以当我试图从开发分支git推我有这个错误。

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

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

我有同样的问题。 我使用Git Totoise。 只需点击右键 – > TotoiseGit – >清理。 现在你可以推到Github它对我工作得很好:D

这是因为你对主人做出了相互冲突的改变。 而你的存储库服务器不能告诉你,用这些话,所以它给出了这个错误,因为这不是他为你处理这些冲突的问题,所以他要求你自己做。 作为?

1- git pull这将把你的代码从你的代码库合并到你的代码中。 所以显示了冲突。

2-处理这些手册的冲突。

3-

 git push origin master 

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