今天克隆仓库的时候发现虽然将图片和一些文件的存储丢到了 Cloudflare R2 上去,但是仓库的大小还是占用到了 182MB ,为了方便仓库的克隆和不必要的存储,于是开始清理相关内容。
1git rev-list --objects --all | git cat-file "--batch-check=%(objecttype) %(objectname) %(objectsize) %(rest)" | sed -n "s/^blob //p" | sort --numeric-sort "--key=2" | cut -c 1-12,41- | $(command -v gnumfmt || echo numfmt) --field=2 --to=iec-i --suffix=B --padding=7 --round=nearest
1# 如果提示 zsh: command not found: numfmt 请先安装 coreutilsbrew install coreutils

files need clean
可以看到有很多文件还存在而并没有被清理,故执行下面的命令来清理。(要注意将
source/img/*.*
替换成你自己的地址。1git filter-branch --force --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch content/img/*.*' --tag-name-filter cat -- --allgit filter-branch --force --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch content/files/*.*' --tag-name-filter cat -- --all
回收 git 的存储空间并强制推送到远程仓库
1rm -rf .git/refs/original/
2git reflog expire --expire=now --allgit repack -A -dgit gc --aggressive --prune=now
3git push --force
此时需要重新clone仓库即可看到优化后的效果。
我这个仓库从 182MB -》 219KB,可以说很不错(