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



我们有一个GitLab托管的repo正在运行,其中包含一些我们想要删除的大型二进制文件。我知道像BFG Repo Cleaner这样的工具,它可以从Git存储库中删除文件。

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

如果是这样的话,有没有更好的方法来清理回购,而不会把这些事情搞砸?

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

尽管在不更改所有后续提交ID的情况下无法修改git历史记录,但BFG做了一些有助于更改的事情:

  1. 在清理您的回购时,BFG使用其新ID更新提交消息中发现的任何对象ID。如果你正在删除私人数据,这是一个直接的替代,如果你只是删除大文件(即提交ID本身并不暗示敏感信息),提交消息中的文本将变为"$newId [formerly $oldId]",此外,Former-commit-id:页脚将添加到所有修改的提交消息的底部
  2. BFG每次运行时还会在repo-name.bfg-report目录下创建一个object-id-map.old-new.txt文件。原则上,我相信这个文件可以在GitLab repo上使用,这样其他提交id的引用也可以被修复

全面披露:我是BFG回购清洁剂的作者

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

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

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

最新更新