我在 Gitlab 上有一个存储库,其中一个分支上有一些提交,如下所示
A - B - C - D - HEAD
Run Code Online (Sandbox Code Playgroud)
我错误地在提交 B 上上传了一些秘密令牌字符串,后来我注意到了,所以我从 A 创建了一个新分支,然后手动复制了提交 D 中的所有文件,所以历史记录现在看起来像这样
/ - E - HEAD
A - B - C - D
Run Code Online (Sandbox Code Playgroud)
现在我所做的是在 Gitlab 上删除分支 BCD,这样那些“令牌提交”就不再可访问,历史记录看起来像
A - E - HEAD
Run Code Online (Sandbox Code Playgroud)
然而,我只是注意到我仍然可以通过项目 - >活动访问麻烦的提交,并看到我的旧推送,其中旧提交仍然可以访问。
怎样才能彻底删除那些呢?
正如您所注意到的,GitLab 在某些情况下会保留 git 引用,即使您删除了这些提交并强制推送所有分支。除了您提到的活动页面之外,这还将包括 MR 差异、管道参考等内容。
这在提交大文件时也很明显——简单地删除提交并强制推送不会减少项目存储大小!
要从 GitLab 项目中完全删除内容,您需要按照本指南清除存储库历史记录。通过上传过滤器文件启动项目清理后,所有各种提交引用都将被删除,内容将完全消失且无法访问。
您可能仍会在活动页面中看到提交哈希值和消息,但链接不会显示这些提交的任何内容,因为它们已被删除。
正如文档中所述:
此过程不适合从存储库中删除密码或密钥等敏感数据。有关提交的信息(包括文件内容)缓存在数据库中,即使从存储库中删除,这些信息仍然可见。
因此,正如本答案中提到的,您应该采取的第一步是轮换您受损的凭据。
如果完全删除活动页面和数据库引用中的提交消息和哈希对您来说很重要,那么您唯一的选择就是迁移/删除并重新创建项目(在清除 git 历史记录之后)。但这也会消除诸如问题、合并请求等问题。
| 归档时间: |
|
| 查看次数: |
3554 次 |
| 最近记录: |