首页 > 解决方案 > 如何从 gitlab 中删除提交?(Git-revert 不工作)

问题描述

我正在尝试删除一些错误的 gitlab 提交。

其他线程中提供的答案是

  1. 点击提交名称
  2. 点击“选项”
  3. 点击“还原”

当我尝试删除提交时,它们没有被删除。相反,在顶部创建了两个额外的合并。我确定这是正常的,但我不明白它为什么这样做,更重要的是,它没有删除提交。

如何完全删除提交,以便最后一个可用的提交是带有超人标志的提交?谢谢

标签: gitgithubgitlabgit-commitgit-revert

解决方案


非破坏性的方法就是做你已经做过的事情:恢复你的提交。当然还有“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分支

推荐阅读