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