git大文件查询和删除

438 阅读1分钟

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仓库变小。

参考链接

git官网命令详细解释

git 查找大文件,删除大文件

彻底删除git中的较大文件(包括历史提交记录)