Git 删除历史记录中的大文件

1. 查看历史记录中最大的10个文件id 。

git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -10

列出的结果有四列,第一列是object-id,下面要使用;第二列是文件大小,单位是字节;第三列是压缩后的大小;第四列是起始数据偏移量。

2. 根据 object-id 查看是哪个文件。

git rev-list --objects --all | grep {object-id}

3. 从历史记录中去掉该文件。

git filter-branch --force --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch {your-file-name}' --tag-name-filter cat -- --all

4. 提交变更。

注意要加 –force 。

git push --force --all

5. 清除(重建)本地缓存。

rm -Rf .git/refs/original
rm -Rf .git/logs/
git gc
git prune