前言 #
最近使用Git管理Unity项目,误将Unity的Filo Cables
包commit&push
到仓库中了,折腾半天发现无法撤回,这个包没有导入到Unity之前就有12MB+
, 对于一个Git仓库来说还是太大了,所以需要即时从.git
中删除所有相关文件的历史提交记录,避免仓库越来越大,防止占用Github公共资源。
工具 #
推荐使用git filter-repo
,一个可以清理并重写仓库中历史记录的工具;自动清理本地仓库的引用与缓存;比git自带的git filter-branch
更加高效,后者容易导致历史记录的混乱与重写;适合处理有高占用空间文件的仓库(比如Unity的3d-fbx文件,模型pt文件等等)。
git filter-repo
:newren/git-filter-repo: Quickly rewrite git repository history (filter-branch replacement)- 验证清理效果:
git 自带命令
- 查看git仓库占用空间:
git count-objects -vH

常用方法 #
A. filter-repo #
# 1. 文件夹
# 保留my_folder下面的所有文件, 删除其他所有文件
git filter-repo --path my_folder
# --invert-paths 反转. 删除my_folder下面的所有文件
git filter-repo --path my_folder --invert-paths --force
# 2. 文件
# --path-glob <file.name> 删除指定文件
git filter-repo --path-glob xxx.mp4 --invert-paths --force
# 3. 占用空间
git filter-repo --strip-blobs-bigger-than 100K
git filter-repo --strip-blobs-bigger-than 1M
git filter-repo --strip-blobs-bigger-than 1G
# 清理引用和缓存
git reflog expire --expire=now --all && git gc --prune=now --aggressive
# 可能清理完成之后,把remote也给清除了,这里重置
git remote add origin [email protected]:Aoidayo/xxx.git
# push
git push origin --force --all
git push origin --force --tags
B. 验证 #
git rev-list
查看高占用文件, 剩余文件大小分布git count-objects -vH
git log <file/dir>
# 1. git rev-list
# 查看高空间占用的文件 : 列出 Git 仓库中占用空间最大的 10 个文件(blob 对象)
git rev-list --objects --all | grep -f <(git verify-pack -v .git/objects/pack/*.idx | grep blob | sort -k 3 -n | cut -f 1 -d " "|tail -10)
# 剩余文件大小分布 (B)
git rev-list --objects --all | awk '{print $1}' | git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' | awk '/^blob/ {print $3, $4}' | sort -n
# 2. git count-objects -vH
'''
git count-objects -vH
count: 19
size: 25.71 KiB
in-pack: 283
packs: 1
size-pack: 9.30 MiB
prune-packable: 0
garbage: 0
size-garbage: 0 bytes
'''
# 3. git log <file/dir>
$ git log RopeUpDown\
# 没有输出表示已经清理干净了
# 输出 和当前文件或者目录有关的commit history
'''
>
commit c656025c6c761d5f3fc0be2989c34232cdaf5dfb (HEAD -> main)
Author: aoi <[email protected]>
Date: Fri Feb 28 21:17:38 2025 +0800
fix(remove filo): add ignore
commit 6f0a3ffb2731698ec5ce981f9fa281ee8332ba13
Author: aoi <[email protected]>
Date: Fri Feb 28 20:57:55 2025 +0800
Rope Up Down
'''
附录 #
参考: