清理 Git 仓库中残留的大文件
今天克隆仓库的时候发现虽然将图片和一些文件的存储丢到了 Cloudflare R2 上去,但是仓库的大小还是占用到了 182MB ,为了方便仓库的克隆和不必要的存储,于是开始清理相关内容。
1 | git 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 请先安装 coreutils |
可以看到有很多文件还存在而并没有被清理,故执行下面的命令来清理。(要注意将source/img/*.*
替换成你自己的地址。
1 | git filter-branch --force --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch source/img/*.*' --tag-name-filter cat -- --all |
回收 git 的存储空间并强制推送到远程仓库
1 | rm -rf .git/refs/original/ |
此时需要重新clone仓库即可看到优化后的效果。
我这个仓库从 182MB -》 219KB,可以说很不错(
本博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明来自 CUNOE&DIARY!