文章时间:2019年11月10日 14:02:59 解决问题:清理Git中比较大的文件,主要针对历史记录进行清理 ps:因为Git可以恢复版本,所有历史提交过的较大的文件,也会被保存下来,所以我们需要……xx嗯,你懂的。
git count-objects -v # 查看 git 相关文件占用的空间
du -sh .git # 查看 .git 文件夹占用磁盘空间
du -d 1 -h # 列出所有文件的大小
du是linux 的基础命令,很多用法,详情自己去查找其他文档。 因为git的历史文件都是存在一个文件里的,我们使用下面命令可以找出排名前五的文件
git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -5
直接参考这篇教程即可,写的比较全面,比百度上很多废教程好多了。
记一次删除Git记录中的大文件的过程:https://www.hollischuang.com/archives/1708
工具名称:BFG
工具地址:https://rtyley.github.io/bfg-repo-cleaner/
直接官网下载即可,bfg-1.13.0.jar 将程序包放到一个文件夹里,为了方便,重命名为bfg.jar
clone自己的git repo,使用--mirror参数
git clone --mirror http://192.168.1.199:8099/hcses/hcses-warehouse.git
这里官网给出的命令,可能会不行,我们继续添加参数。 删除文件和删除文件夹的命令
java -jar bfg.jar --delete-files 我是单个文件名字 hcses-warehouse.git --no-blob-protection
java -jar bfg.jar --delete-folders 我是文件夹的名字 hcses-warehouse.git --no-blob-protection
在完成上面的指令后,实际上这些数据/文件并没有被直接删除,这时候需要使用git gc指令来清除。
cd hcses-warehouse.git
git reflog expire --expire=now --all && git gc --prune=now --aggressive
git push
这里普通推送可能也会报错,我们可以使用强制推送。
git push --force