永久删除GitLab回收站中的二进制文件

问题描述:

我们在工作中有一个GitLab托管的回购站,其中包含一些我们想要移除的大型二进制文件。我知道诸如BFG Repo-Cleaner这样的工具,它将从Git存储库中删除文件。永久删除GitLab回收站中的二进制文件

我们经常在GitLab中引用特定的提交ID。运行BFG Repo-Cleaner会搞砸吗?

如果是这样,是否有更好的方法来清理回购,不会搞砸这些?

我们经常在GitLab中引用特定的提交ID。

虽然git的历史不能在不改变所有后续提交ID来修改,BFG做了几件事情,将与变化帮助:

  1. ,因为它是清洁您的回购,BFG的updates any object ids it finds in commit messages与他们的新ID。如果您要删除private data,那么这是一个straight substitution,如果您刚删除大文件(即提交ID本身不包含意味着敏感信息),则提交消息中的文本将变为"$newId [formerly $oldId]",此外,Former-commit-id:页脚将会被添加到all modified commit messages的底部。
  2. BFG还会在每次运行时在repo-name.bfg-report目录下创建一个object-id-map.old-new.txt文件。原则上,我相信这个文件可以在GitLab仓库中使用,以便其他对commit id的引用也可以修复。

完全披露:我是BFG Repo-Cleaner的作者。

我们经常在GitLab中引用特定的提交ID。运行BFG Repo-Cleaner会搞砸吗?

git commit id是从提交内容的哈希值和前一次提交的id构建而成的。这意味着修改历史的任何操作都会导致(a)您修改的任何提交的新提交标识和(b)每个后代提交的新提交标识

如果不生成新的提交ID序列,则无法修改存储库的历史记录。