首页 > 解决方案 > 恢复本地分支后如何推送回购?

问题描述

所以我有一个 git repo,我已经提交并将 repo 推送到服务器。然后我用 git revert 回滚了一些提交到本地的先前提交。现在,当我尝试推送到服务器时,我得到了错误

提示:更新被拒绝,因为您当前分支的提示落后于提示:它的远程对应部分。在再次推送之前集成远程更改(例如提示:'git pull ...')。提示:有关详细信息,请参阅“git push --help”中的“关于快进的说明”。

我知道我在本地分支上恢复了,所以现在远程分支上的提交不在本地分支上。我只想删除服务器上的那些提交。我只想能够按原样推送我的本地分支并“替换”服务器上的头部。我怎么做?我不想从服务器中提取更改,因为无论如何我都想丢弃这些更改。

标签: git

解决方案


这是您需要执行--force-with-lease推送的时间:

git push --force-with-lease <remote> <branch>

例如:

git push --force-with-lease origin 1234-my-feature

警告:--force及其变体“带租约”允许您更改分支的历史记录,有效地删除一个或多个提交。因此,在分布式环境中依赖强制推送应该仍然是例外,或者只有在您确定1234-my-feature在创建自己的分支时没有人依赖时才执行。请参阅git push --force-with-lease 与 --force以了解它们的区别。

一个常见的约定是:特性分支可能被它们各自的所有者/作者强制推送,但是一旦它们被合并到一个master或共享的development分支,它们的历史可能不再被修改。但是您的里程可能会有所不同,具体取决于您的开发环境组织的松散/严格程度。


推荐阅读