我们有一个GitLab托管的repo正在运行,其中包含一些我们想要删除的大型二进制文件。我知道像BFG Repo Cleaner这样的工具,它可以从Git存储库中删除文件。
我们经常在GitLab中提到特定的提交ID。运行BFG Repo Cleaner会把这些搞砸吗?
如果是这样的话,有没有更好的方法来清理回购,而不会把这些事情搞砸?
我们经常在GitLab中提到特定的提交ID。
尽管在不更改所有后续提交ID的情况下无法修改git历史记录,但BFG做了一些有助于更改的事情:
- 在清理您的回购时,BFG还使用其新ID更新提交消息中发现的任何对象ID。如果你正在删除私人数据,这是一个直接的替代,如果你只是删除大文件(即提交ID本身并不暗示敏感信息),提交消息中的文本将变为
"$newId [formerly $oldId]"
,此外,Former-commit-id:
页脚将添加到所有修改的提交消息的底部 - 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序列,就无法修改存储库的历史记录。