我通过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
。难道它不应该更新所有分支吗? - Karlen Kishmiryangit push origin --force
(我建议使用命令行,因为你能从其他用户那里获得更多支持,但这可能在SmartGit中无法实现)。有关更多信息,请参见此网站:http://help.github.com/remotes/。--force
。但如果要与其他开发者共享一个分支,则会导致问题。 - Robert Brisitagit pull --rebase
git push
更多信息请查看Git rebase explained和第3.6章 Git分支 - 变基。
git pull --rebase
结果为 当前分支没有跟踪信息。请指定您想要 rebase 的分支。
- trejder我遇到了相同的错误,只需要在命令中添加"--force"即可解决。
git push origin master --force
--force
可能会有所帮助。 - Brad--force
是一种破坏性的操作,因为它会无条件地用本地的内容覆盖远程仓库。但是 --force-with-lease
可以确保你不会覆盖其他人的工作。更多信息请参见此处:https://dev59.com/k2w05IYBdhLWcg3w_W1O#51447578 - igorjs解决这个问题的最安全的方法是使用--rebase
例如:
git pull <remote> <branch> --rebase
这可能会导致您本地分支中的冲突,您需要手动解决它们。
一旦您解决了所有冲突,您可以使用--force-with-lease
推送您的更改。
例如:
git push <remote> <branch> --force-with-lease
使用此标志,Git 将检查分支的远程版本是否与您正在变基的版本相同,即如果在您变基时有人推送了新提交,则推送将被拒绝,您将被迫重新变基您的分支。
如果您正在处理每小时数百个提交的大型项目,则这很烦人,但仍然是解决此问题的最佳方法。
避免使用 --force,除非您确切地知道自己在做什么。
使用 --force
是具有破坏性的,因为它会无条件地用本地内容覆盖远程存储库。
但是通过 --force-with-lease
,可以确保不覆盖他人的工作。
在 Atlassian 的开发者博客中查看更多信息。
解决方法:
git branch branch_name --set-upstream-to=origin/branch_name
git pull
通过解决合并冲突,我成功地推送了代码。
使用--rebase
选项对我很有用。
git pull <remote> <branch> --rebase
然后将其推送到存储库。
git push <remote> <branch>
例如:
git pull origin master --rebase
git push origin master
“由于此文件而导致拉取失败:”
搜索该文件,删除它(备份之前)。通常它是一个 .gitignore 文件,因此您不会删除代码。重新进行 push 操作。现在应该一切正常了。
git branch
(HEAD detached from 8790704)
主分支
开发分支
最好切换到您的分支,并从相应的分支进行新的拉取。
git checkout develop
git pull origin develop
git push origin develop
遇到了相同的问题,为了解决它,请运行以下git
命令。
git pull {url} --rebase
git push --set-upstream {url} master
您必须先在Github上创建存储库。