【发布时间】:2011-10-17 09:02:48
【问题描述】:
我已经通过 Git Online 编辑了我的 GIT 存储库。尝试推送本地代码更改后,出现错误:
Git push failed, To prevent from losing history, non-fast forward updates were rejected.
我该如何解决这个问题?
【问题讨论】:
我已经通过 Git Online 编辑了我的 GIT 存储库。尝试推送本地代码更改后,出现错误:
Git push failed, To prevent from losing history, non-fast forward updates were rejected.
我该如何解决这个问题?
【问题讨论】:
先拉取更改:
git pull origin branch_name
【讨论】:
git pull?遥控器等于origin,所以它实际运行的是:git pull origin。它不应该更新所有分支吗?
如果您确定要推送,请将 --force 添加到您的命令行。例如。使用git push origin --force(我推荐使用命令行,因为您会发现其他用户通过命令行获得更多支持。SmartGit 也可能无法做到这一点。)有关更多信息,请参阅此站点:http://help.github.com/remotes/
【讨论】:
--force。但是,与其他开发人员共享分支时确实会导致问题。
在推送之前,使用 rebase 选项执行 git pull。这将获取您在线(在您的源中)所做的更改并在本地应用它们,然后在其上添加您的本地更改。
git pull --rebase
现在,你可以推送到远程
git push
如需了解更多信息,请查看Git rebase explained 和Chapter 3.6 Git Branching - Rebasing。
【讨论】:
git pull --rebase 以 There is no tracking information for the current branch. Please specify which branch you want to rebase against. 结束
我遇到了同样的错误,只需在命令中添加“--force”,就可以了
git push origin master --force
【讨论】:
--force 可能会有所帮助。
您可以在命令中添加--force-with-lease,它会起作用。
git push --force-with-lease
--force 具有破坏性,因为它无条件地用您在本地拥有的任何内容覆盖远程存储库。但是--force-with-lease 确保你不会覆盖其他人的工作。
查看更多信息here。
【讨论】:
我也遇到了同样的问题。
原因是,我的本地分支不知何故丢失了对远程对应的跟踪。
之后
git branch branch_name --set-upstream-to=origin/branch_name
git pull
并解决了合并冲突,我能够推动。
【讨论】:
(一个)Netbeans 7.1 的解决方案:尝试拉动。这也可能会失败。现在查看日志(它们现在通常显示在 IDE 中)。有一行/多行说:
“由于这个文件,拉取失败:”
搜索该文件,将其删除(之前进行备份)。通常它是一个 .gitignore 文件,所以你不会删除代码。重做推动。现在一切都应该正常了。
【讨论】:
使用--rebase 选项对我有用。
git pull <remote> <branch> --rebase然后推送到仓库。
git push <remote> <branch>例如
git pull origin master --rebase
git push origin master
【讨论】:
我也遇到过同样的问题。 我解决了
git checkout <name branch>
git pull origin <name branch>
git push origin <name branch>
【讨论】:
checkout 将覆盖这些更改,或者至少不会将它们包含在推送中。
这对我有用。可以在 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
【讨论】:
遇到同样的问题,要解决它,运行以下git 命令。
git pull {url} --rebasegit push --set-upstream {url} master您必须先在 github 上创建存储库。
【讨论】:
有时,当你从你的 git 中提取数据时,HEAD 会分离。您可以通过输入命令来检查这一点:
git branch
(HEAD 与 8790704 分离)
主人
开发
最好搬到你的分支并从你各自的分支中重新拉动。
git checkout develop
git pull origin develop
git push origin develop
【讨论】: