























有时候项目里引用了一些大文件,导致 .git 容量高达几个 G。
如果这些大文件丢失并不敏感,也没什么用处,可以清理掉来节约一下空间。
操作前建议备份。
使用 git-gc 将对象打包。
.git 已经从 4 个 G 变成了 322M。
$ git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -3 | awk '{print$1}')"
4badfe287e3f1d6e4e288b2c3b47261119ce2fca foo/bar1.xxx
00e7645c93c2368b0634bda72507b40c936dd1b3 foo/bar2.xxx
4088cefbbc3dcd6a17dfa656423ad20137fad9dd foo/bar3.xxx
$ git filter-branch --force --index-filter "git rm -rf --cached --ignore-unmatch <filename>" --prune-empty --tag-name-filter cat -- --all
如:
$ git filter-branch --force --index-filter "git rm -rf --cached --ignore-unmatch foo/bar1.xxx" --prune-empty --tag-name-filter cat -- --all
1000 多个提交大概运行了 2 分钟。
$ git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin
$ git reflog expire --expire=now --all
$ git gc --prune=now
一个几十 M 的文件清除后,整个包减小了大概 100 M,多清理几个就降下来了。
最后 Push 时需使用 --force 参数覆盖远端。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。