Git清理文件

git 寻梦 2年前 (2022-11-21) 666次浏览 0个评论 扫描二维码

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

BFG Repo-Cleaner by rtyley

点击下载完成后将这个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

 

喜欢 (17)
[支付宝扫码,感谢支持]
分享 (0)
关于作者:

您必须 登录 才能发表评论!