背景
最近在开发flutter+unity
的手机 app 项目,因为第一次开发unity
,并不是很了解unity
的文件目录,有很多测试用资产(Assets)中的 3d 模型文件也被放进了git
中,这就造成了git
仓库的庞大。
其实这种资产管理用svn
处理会更好,毕竟包含了大量图片,音频及二进制文件,但目前项目很小,用git
管理也还好。
步骤
-
查看 git 仓库大小
git count-objects -vH
-
查看有哪些大文件
git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -10 | awk '{print$1}')"
-
从 git 所有分支历史中删除该文件
git filter-branch --force --index-filter 'git rm -rf --cached --ignore-unmatch <bigfile>' --prune-empty --tag-name-filter cat -- --all
-
回收本地空间
rm -rf .git/refs/original/ git reflog expire --expire=now --all git gc --prune=now git gc --aggressive --prune=now
-
推送到远端仓库
git push origin --force --all
大约 1 分钟