git - 恢复本地分支后如何推送回购?
问题描述
所以我有一个 git repo,我已经提交并将 repo 推送到服务器。然后我用 git revert 回滚了一些提交到本地的先前提交。现在,当我尝试推送到服务器时,我得到了错误
提示:更新被拒绝,因为您当前分支的提示落后于提示:它的远程对应部分。在再次推送之前集成远程更改(例如提示:'git pull ...')。提示:有关详细信息,请参阅“git push --help”中的“关于快进的说明”。
我知道我在本地分支上恢复了,所以现在远程分支上的提交不在本地分支上。我只想删除服务器上的那些提交。我只想能够按原样推送我的本地分支并“替换”服务器上的头部。我怎么做?我不想从服务器中提取更改,因为无论如何我都想丢弃这些更改。
解决方案
这是您需要执行--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
分支,它们的历史可能不再被修改。但是您的里程可能会有所不同,具体取决于您的开发环境组织的松散/严格程度。
推荐阅读
- css - SCSS 如何动态创建样式
- devops - 将 Trivy result.json 文件上传到 DefectDojo
- r - 在 R Shiny 中,如何更改主面板中的默认视图?
- rust - 为什么实施 ArcWake 避免编写样板文件?
- kotlin - 我从 @Composable 函数的上下文中调用 @Composable 但仍然收到错误
- tfs - 将 TFS 2018 更新迁移到 Azure DevOps 2020.0.1 时出错
- javascript - 使用 JavaScript 如何替换 html 中 div 内的一些文本
- python - Django - __init__() 有一个意外的关键字参数“标题”
- php - 通过 file_get_contents() 发送 php 变量?
- android - Firebase Analytics 手动屏幕跟踪无法在 Android 上运行