0

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

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

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

4

2 回答 2

1

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

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

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

于 2015-04-17T23:45:39.467 回答
1

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

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

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

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

于 2015-07-02T06:57:32.390 回答