git大文件查询和删除
[TOC]
适用于删除项目中已经不再使用的大文件。项目中已经删除的大文件git仓库依然存在。
步骤
1.列出项目文件大小
列出项目按照大小top10的文件大小:$ git rev-list --all | xargs -rL1 git ls-tree -r --long | sort -uk3 | sort -rnk4 | head -10
-10就是top10的,-20就是前20的。
2.删除大文件:
- 第1种方法:$git filter-branch -f --prune-empty --index-filter "git rm -rf --cached --ignore-unmatch
Pods/Bugly/Bugly.framework/Bugly" --tag-name-filter cat -- --all - 第二种方法:git filter-branch --force --index-filter 'git rm -rf --cached --ignore-unmatch Pods/Bugly/Bugly.framework/Bugly ' --prune-empty --tag-name-filter cat -- --all
Pods/Bugly/Bugly.framework/Bugly为删除的路径,列出文件大小时就有路径。 有的第1种删除不了,如直接显示Bugly/Bugly.framework/Bugly这种就要使用第二种方法删除。
###3. 强制覆盖远 $ git push origin --force --all
###4. 清除git缓存:
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
例子流程
-
手动加入Bugly的framework到项目中。
-
输入命令:$ git add .
-
查看git仓库的大小,可以看到git仓库明显变大。
-
加入本地分支,推送的远程分支,然后在手动删除sdk,查看git仓库可以看到大小还是跟未删除之前一样大小。
-
列出项目按照大小top10的文件大小,
-
删除大文件,推送到远程,在清除缓存就能明显看到git仓库变小。