Git推送失败,“非快进更新被拒绝”

时间:2011-08-01 11:15:23

标签: git github push

我通过Git Online编辑了我的GIT存储库。在我尝试推送我的本地代码更改后,我收到了一个错误:

Git push failed, To prevent from losing history, non-fast forward updates were rejected.

我该如何解决这个问题?

12 个答案:

答案 0 :(得分:135)

首先拉变化:

git pull origin branch_name

答案 1 :(得分:83)

如果您确定要推送,请在命令行中添加--force。例如。使用git push origin --force(我建议使用命令行,因为您可以通过命令行找到其他用户的更多支持。使用SmartGit可能无法实现这一点。)有关详细信息,请参阅此站点:http://help.github.com/remotes/ < / p>

答案 2 :(得分:21)

在推送之前,使用rebase选项进行git pull。这将获得您在线(在您的原点)所做的更改并在本地应用,然后在其上添加您的本地更改。

git pull --rebase

现在,你可以推送到远程

git push 

有关详细信息,请查看Git rebase explainedChapter 3.6 Git Branching - Rebasing

答案 3 :(得分:12)

我遇到了同样的错误,只需在命令中添加“ - 强制”,就可以了。

git push origin master --force

答案 4 :(得分:4)

我遇到了同样的问题。
原因是,我的本地分支机构以某种方式失去了对远程对手的跟踪。

git branch branch_name --set-upstream-to=origin/branch_name
git pull

并解决合并冲突,我能够推动。

答案 5 :(得分:4)

您可以将-force-with-lease 添加到命令中,它将起作用。

git push --force-with-lease

-force 具有破坏性,因为它会无条件地用您本地的内容覆盖远程存储库。但是,-强制租赁可确保您不会覆盖他人的工作。

查看更多信息here

答案 6 :(得分:1)

(一)Netbeans 7.1的解决方案:尝试拉动。这可能也会失败。现在看一下日志(它们现在通常在IDE中显示)。有一条/多条线说:

“由于此文件导致拉取失败:”

搜索该文件,将其删除(之前进行备份)。通常它是.gitignore文件,因此您不会删除代码。重做推动。一切都应该现在正常。

答案 7 :(得分:1)

使用--rebase选项对我有用。

  • git pull <remote> <branch> --rebase

然后推送到仓库。

  • git push <remote> <branch>

例如

git pull origin master --rebase

git push origin master

答案 8 :(得分:0)

我也有同样的问题。 我解决了

git checkout <name branch>
git pull origin <name branch>
git push origin <name branch>

答案 9 :(得分:0)

这对我有用。它可以在git文档here

中找到

如果您在所需的分支机构,您可以这样做:

git fetch origin
# Fetches updates made to an online repository
git merge origin YOUR_BRANCH_NAME
# Merges updates made online with your local work

答案 10 :(得分:0)

遇到同样的问题,要解决它,请运行以下git命令。

  • git pull {url} --rebase
  • git push --set-upstream {url} master

您必须先在github上创建存储库。

答案 11 :(得分:0)

有时候,当从git中拉出时,HEAD会脱落。您可以通过输入以下命令进行检查:

git branch 
  
    
        
  • (HEAD与8790704分离)

             

    大师

             

    开发

  •     
  

最好搬到您的分支机构,并从各自的分支机构那里重新汲取经验。

git checkout develop

git pull origin develop

git push origin develop