清理 git 仓库

发现 git 仓库的存储空间有问题,原来是一不小心提交了二进制文件。作为强迫症患者学习了一下如何给仓库瘦身。

清理前 repository 为 93.1 MiB 清理后 repository 为 1.6 MiB

0x01 备份

重写存储库历史记录是一种破坏性操作。首先需要备份仓库,在 Settings > General > Advanced > Export project 导出项目。

0x02 清理

重新克隆

1
git clone --bare --mirror /path/to/project.bundle

使用 git filter-repo 查看那些文件需要被删除

1
2
git filter-repo --analyze
head filter-repo/analysis/*-{all,deleted}-sizes.txt

使用下面命令清理需要删除的文件,详见 git filter-repo documentation

1
git filter-repo --invert-paths --path path1 --path path2 ...

强制更新

1
2
3
4
5
6
git push origin --force 'refs/heads/*'

git push origin --force 'refs/tags/*'

git push origin --force 'refs/replace/*'

更新 gitlab 的 commit-map:

在 Settings > Repository 中 上传 filter-repo/commit-map

0x03 LFS

将特定文件添加到 git LFS 中,执行

1
git lfs migrate import --everything --include="*.bin"

强制更新

1
git  push --force

0xFF ref: