如何从gitlab中删除提交?(Git 恢复不起作用)

Nic*_*son 3 git github git-revert git-commit gitlab

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

其他线程中提供的答案是

  1. 单击提交名称
  2. 点击“选项”
  3. 点击“恢复”

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

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

zes*_*ssx 5

非破坏性的方法就是简单地做你已经做过的事情:恢复你的提交。当然还有“另外 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
Run Code Online (Sandbox Code Playgroud)

对于 Gitlab,我认为你没有其他办法,除了:

  • 从提交创建一个新分支329a7a0e,命名为master-rollback
  • 删除master分支
  • master从创建一个新分支master-rollback
  • 删除master-rollback分支