Git清理过大的git目录objects文件
- Git清理过大的git目录objects文件
1. git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk '{print$1}')"
- 找到最大的几个文件后,删除:
git filter-branch --force --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch *(路径)/**(文件名).*' --tag-name-filter cat -- --all
- 等命令执行完后,要提交到远程:
git push --force --all
此时你会发现本地目录中的.git文件并不会马上就变小,而是与原来是一样的,
是因为Git仓库历史有个缓存期,如果不主动回收、清理仓库历史,一般的这些记录还会保存一段时间,以备你突然后悔了,没办法找回删掉的文件。
- 通过以下命令主动回收资源:
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git fsck --full --unreachable
git repack -A -d
git gc --aggressive --prune=now
git push origin <远程分支名称> --force
# git push origin --force --tags
- 让远程仓库变小:
git remote prune origin