如何从 gitlab 中完全删除提交?

Posted

技术标签:

【中文标题】如何从 gitlab 中完全删除提交?【英文标题】:How to completely remove a commit from gitlab? 【发布时间】:2018-09-13 20:17:36 【问题描述】:

我在我的 git 存储库中提交并推送了它,但不小心它包含了我们生产机器的一些密码。所以我删除了提交:

git reset --hard HEAD~1
git push --force

这确实从提交列表中删除了提交,但是 gitlab 上提交的 url 仍然显示了提交的来源。

我不确定这是仍然将提交内容保存在 gitlab 服务器上的 git,还是以某种方式存储提交内容的 gitlab 数据库,但我确实需要从 gitlab 中完全删除该提交服务器。

有人知道从 gitlab 中完全删除提交及其内容的方法吗?

【问题讨论】:

这可能不言而喻,但请务必更改这些密码。 我不知道 GitLab 是否保留副本。 Git 会保留提交,直到它被垃圾收集。您可以触发早期垃圾收集。看看在服务器上的 repo 中运行 git gc --prune=now 是否有帮助。 看this 【参考方案1】:

您可能应该从查看 GitLab 存储库的 Web 界面开始。如果分支在那里,您可以通过运行将其删除

git push <remote> :<branch>

这将在指定的远程将&lt;branch&gt; 替换为冒号之前的内容,即没有内容。 如果您无法使用 Web 界面检查分支是否在远程,您应该能够获取所有分支,或者至少使用一些 git fetch 之类的命令列出它们,不知道如何。

如果分支未在远程列出,则您只有远程的本地副本,您应该能够删除该副本,例如,

git branch -D <remote>/<branch>

我不能代表 GitLab 的内部结构,所以我不能保证如果你这样做会破坏数据,所以你应该按照已经建议的那样替换所有密码。

【讨论】:

以上是关于如何从 gitlab 中完全删除提交?的主要内容,如果未能解决你的问题,请参考以下文章

如何在gitlab中的一次提交中查找已删除的文件

如何在Gitlab CI脚本中删除符号链接的目标?

不该提交的代码提交到了gitlab上,这时我们该如何删除了

要从gitlab repo中删除最新的提交,并删除旧的本地提交

从远程 Git 存储库中完全删除提交

从 git 数据库中完全删除提交 [重复]