1. 运行 gc
,生成 pack
文件
$ git gc --prune=now
2. 找出最大的三个文件
$ git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -3
# 输出:
4d2ae4c4413740d81019aa65691a2f75f00a5d3b blob 657413784 136436872 5330845
4d2ae4c4413740d81019aa65691a2f75f00a5d3b blob 657413784 136436872 5668892
4d2ae4c4413740d81019aa65691a2f75f00a5d3b blob 657413784 136436872 6313927
3. 查看大文件是什么文件
$ git rev-list --objects --all | grep 4d2ae4c4
# 4d2ae4c4413740d81019aa65691a2f75f00a5d3b 15504.hprof
4.移除对该文件的引用(也就是 15504.hprof
)
$ git filter-branch --force --index-filter "git rm --cached --ignore-unmatch '15504.hprof'" --prune-empty --tag-name-filter cat -- --all
5.进行 repack
$ git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin
# 这会清除分支变更历史
$ git reflog expire --expire=now --all
$ git repack -A -d
$ git gc --prune=now
$ git gc --aggressive --prune=now
#
检查完整性
$ git fsck --full --unreachable
# 最后push到远程仓库
$ git push --force
6.查看 pack
的空间使用情况
$ git count-objects -v
7. BFG Repo
点击下载完成后将这个jar包复制到您到项目根目录下与.git目录同级 # 删除某个文件 java -jar bfg-1.14.0.jar --delete-files WxUtils.java # 删除完成后提交 git push --force # 替换提交记录中的文本 java -jar bfg-1.14.0.jar --replace-text replace.txt # 删除掉指定大小的文件 java -jar bfg-1.14.0.jar --strip-blobs-bigger-than 50M