跳过正文
  1. blog/

Git 清除.git仓库历史记录中的高占用内存文件

·872 字
Aoidayo
作者
Aoidayo
懒人
目录

前言
#

最近使用Git管理Unity项目,误将Unity的Filo Cablescommit&push到仓库中了,折腾半天发现无法撤回,这个包没有导入到Unity之前就有12MB+, 对于一个Git仓库来说还是太大了,所以需要即时从.git中删除所有相关文件的历史提交记录,避免仓库越来越大,防止占用Github公共资源。

工具
#

推荐使用git filter-repo,一个可以清理并重写仓库中历史记录的工具;自动清理本地仓库的引用与缓存;比git自带的git filter-branch更加高效,后者容易导致历史记录的混乱与重写;适合处理有高占用空间文件的仓库(比如Unity的3d-fbx文件,模型pt文件等等)。

image-20250228223219471

常用方法
#

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
'''

附录
#

参考: