我正试图将提交推送到远程,并得到以下错误消息:
$ 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.
我想我把多个本地分支推送到一个远程分支,这让我在某个地方陷入了混乱,我想基本上清除服务器上的内容,然后从新分支推送整个分支。这可能吗,或者有更好的方法来修复这个错误吗?
Ps。这个远程分支托管在Fortrabbit上,所以我没有完全访问服务器来简单地删除分支并创建一个新分支,因为Fortrabby的部署机制是基于Git的。
我想基本上清除服务器上的内容,并从fresh推送整个分支。
这可能意味着力推请注意,强制推送通常不是一件安全的事情,尤其是在推送到像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
参数。