我通过Git Online编辑了我的GIT存储库。在我尝试推送我的本地代码更改后,我收到了一个错误:
Git push failed, To prevent from losing history, non-fast forward updates were rejected.
我该如何解决这个问题?
答案 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 explained和Chapter 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