1

我有一个大型(~2GB)、旧(15 年以上)的 git 存储库(这些年已从 CVS 转换为 SVN 到 git)。我们正在将我们的托管从本地更改为云,所以我想花时间清理一下 repo。我想删除不再属于历史记录的旧文件,以减少整体克隆大小/时间。

有数百个我不再关心的分支。我真的只对保留几个(~10)分支感兴趣。

我已经尝试使用BFG 回购清洁器使用--strip-blobs-bigger-than 1M --protect-blobs-from <my refs>. 它似乎非常符合我的用例。我不想删除当前存在于我所选分支的 HEAD 中的任何文件,无论它们的大小。但是,除了生成映射文件之外,它并不能很好地处理更改的提交哈希。

我也试过git filter-repo使用--strip-blobs-bigger-than 1M. 这使用了 replace-refs,以便我可以通过旧的提交哈希进行引用,这非常重要。但是,它通过删除我不想删除的文件来破坏我当前分支中的内容。

这似乎git filter-repo是我应该使用的工具,但是,我不想手动列出我想要删除的所有文件(或者相反,我想要保留的文件)。有一个更好的方法吗?

4

0 回答 0