一、问题描述
当使用git管理了一个大文件的时候,如果将该文件从文件系统删除之后再commit到仓库,这个时候仓库中依然有该文件的记录。
这样会导致.git仓库一直比较大,所以,如果确保不会回退到之前的版本了,那么可以将该大文件彻底从提交记录中删除。
二、解决方案
(1)查看当前5个大文件
git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk '{print$1}')"
(2)将某个大文件从提交记录中移除
git filter-branch --force --index-filter 'git rm -rf --cached --ignore-unmatch 大文件名' --prune-empty --tag-name-filter cat -- --all
(3)彻底删除
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now
(4)查看.git目录大小
du -h -d 1 .git