如何修复Git中的问题:“更新被拒绝,因为推送的分支提示位于其远程对应的后面”

时间:2014-09-08 16:49:01

标签: git version-control fortrabbit

我正在尝试将提交推送到远程并收到此错误消息:

$  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。

1 个答案:

答案 0 :(得分:8)

  

我想基本清楚服务器上的内容,并将整个分支从新的分支推出。

这可能意味着强制推送请注意,强制推送通常不是一件安全的事情,在推送到像GitHub这样的共享源代码存储库时应特别避免。但在这种情况下,您要推动更新PaaS服务器,这很可能。

您可能希望在强制推送前使用gitkgit log --all --graph --decorate或其他工具以图形方式显示您的分支,只是为了确保所有内容都符合您的预期。

要强制将您的本地master分支推送到origin远程master分支,请运行

git push --force-with-lease origin master:master

只有当您的本地分支与您要推送的分支相关时,--force-with-lease参数才会导致强制推送成功。 (这可以防止意外覆盖您不知道的提交。)我强烈建议尽可能使用with-lease变体而不是旧的--force参数,这不太安全