Git清理文件

2023-03-01 17:04:24 浏览数 (2)

1. 运行 gc ,生成 pack 文件

代码语言:javascript复制
$ git gc --prune=now

2. 找出最大的三个文件

代码语言:javascript复制
$ 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. 查看大文件是什么文件

代码语言:javascript复制
$ git rev-list --objects --all | grep 4d2ae4c4
# 4d2ae4c4413740d81019aa65691a2f75f00a5d3b 15504.hprof

4.移除对该文件的引用(也就是 15504.hprof

代码语言:javascript复制
$ git filter-branch --force --index-filter "git rm --cached --ignore-unmatch '15504.hprof'"  --prune-empty --tag-name-filter cat -- --all

5.进行 repack

代码语言:javascript复制
$ 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 的空间使用情况

代码语言:javascript复制
$ git count-objects -v
gc

0 人点赞