永久删除GitLab repos中的二进制文件

时间:2015-03-30 17:43:08

标签: git git-rewrite-history bfg-repo-cleaner

我们在工作中有一个GitLab托管的repo,其中包含一些我们想要删除的大型二进制文件。我知道诸如BFG Repo-Cleaner之类的工具,它将从Git存储库中删除文件。

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

如果是这样,是否有更好的方法来清理不会弄乱它们的回购?

2 个答案:

答案 0 :(得分:1)

  

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

git commit id是根据提交内容的哈希值和前一次提交的id构建的。这意味着修改历史记录的任何操作将导致(a)您修改的任何提交的新提交ID和(b)每个后代提交的新提交ID

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

答案 1 :(得分:1)

  

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

虽然在不更改所有后续提交ID的情况下无法修改git历史记录,但BFG会执行一些有助于更改的内容:

  1. 当它正在清理您的仓库时,BFG updates any object ids it finds in commit messages带有 new ids 。如果您要删除private data,那么它是straight substitution,如果您只是删除大文件(即提交ID本身暗示敏感信息),则为您的提交邮件变为"$newId [formerly $oldId]",此外,Former-commit-id:页脚将添加到all modified commit messages的底部。
  2. 每次运行时,BFG还会在object-id-map.old-new.txt目录下创建一个repo-name.bfg-report文件。原则上,我相信这个文件可以在GitLab repo上使用,这样也可以修复对提交ID的其他引用。
  3. 完全披露:我是BFG Repo-Cleaner的作者。