我正在尝试将提交推送到远程并收到此错误消息:
$ git push origin master
To git@git1.eu1.frbit.com:hbrosuru.git
! [rejected] ab68c0485d -> master (non-fast-forward)
error: failed to push some refs to 'git@git1.eu1.frbit.com:hbrosuru.git'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. Check out this branch and integrate the remote changes
hint: (e.g. 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
我认为通过将多个本地分支推送到这个单独的远程分支,我已陷入困境,我想基本清除服务器上的内容并推动整个分支的新鲜。这是可能的,还是有更好的方法来解决这个错误?
聚苯乙烯。这个远程分支托管在Fortrabbit上,所以我没有完全访问服务器来简单地删除分支并创建一个新分支,因为Fortrabbit的部署机制基于Git。
答案 0 :(得分:8)
我想基本清楚服务器上的内容,并将整个分支从新的分支推出。
这可能意味着强制推送。 请注意,强制推送通常不是一件安全的事情,在推送到像GitHub这样的共享源代码存储库时应特别避免。但在这种情况下,您要推动更新PaaS服务器,这很可能。
您可能希望在强制推送前使用gitk
,git log --all --graph --decorate
或其他工具以图形方式显示您的分支,只是为了确保所有内容都符合您的预期。
要强制将您的本地master
分支推送到origin
远程master
分支,请运行
git push --force-with-lease origin master:master
只有当您的本地分支与您要推送的分支相关时,--force-with-lease
参数才会导致强制推送成功。 (这可以防止意外覆盖您不知道的提交。)我强烈建议尽可能使用with-lease
变体而不是旧的--force
参数,这不太安全