git - 如何从 gitlab 中删除提交?(Git-revert 不工作)
问题描述
我正在尝试删除一些错误的 gitlab 提交。
其他线程中提供的答案是
- 点击提交名称
- 点击“选项”
- 点击“还原”
当我尝试删除提交时,它们没有被删除。相反,在顶部创建了两个额外的合并。我确定这是正常的,但我不明白它为什么这样做,更重要的是,它没有删除提交。
如何完全删除提交,以便最后一个可用的提交是带有超人标志的提交?谢谢
解决方案
非破坏性的方法就是做你已经做过的事情:恢复你的提交。当然还有“2 次以上的提交”,但您的分支处于与以前相同的状态。
破坏性的方法是删除提交,但这会覆盖您的分支历史记录。因此,您需要额外的权限来重写分支历史。
在更进一步之前,您需要了解:
- 根据存储库配置,您可能不允许这样做
- 您将强制在此存储库上工作的其他所有人强制拉取分支,因此如果他们不太了解该过程,他们可能会失去工作
- 在超人之后,您将失去每一个承诺,即使是那些在过去几个小时内由其他人创建的承诺
我强烈建议您不要这样做。
通过代码,假设这是分支master
:
# Retrieve the latest version
git pull origin master
# Goes back to the superman commit
git reset --hard 329a7a0e
# Force push to rewrite history
# Will be refused if the branch is protected
git push origin master --force
使用 Gitlab,我认为您别无他法:
- 从
329a7a0e
提交创建一个新分支,命名为master-rollback
- 删除
master
分支 - 创建一个新的
master
分支master-rollback
- 删除
master-rollback
分支
推荐阅读
- javascript - For Loop 仅显示最后一个值,如何显示每个值?
- excel - 我的 vba 代码可能更紧凑和简化
- php - 每次我尝试将文件上传到 s3 存储桶时都会收到 403 Forbidden 错误。(PHP, SDK)
- scala - 如何压缩两个列表,其中一个只有一个或多个元素(从两个列表中一个接一个地组合元素)
- graphql - FaunaDB Graph 查询返回错误 必须在查询中提供模式定义
- kubernetes - volumeMounts: 在 kubernetes pod 中可以是可选的吗
- matlab - Matlab 如何应用 ASDR 曲线以获得更平滑的声音(实施问题)
- mysql - 如何在 GCP 上使用 MySQL 运行 Ghost?
- c# - 从 Jquery 将值传递给 href
- python-3.x - 在 tcolorbox 中写入 SQL 查询的输出时不需要的字符