仓库体积过大,如何减小?

Posted 一路追寻

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了仓库体积过大,如何减小?相关的知识,希望对你有一定的参考价值。

概述

码云平台目前对仓库的配额如下:

套餐免费版基础版标准版高级版尊享版
单仓库最大 500 MB最大 1 GB最大 1 GB最大 2 GB最大 3 GB
单文件最大 50 MB最大 100 MB最大 100 MB最大 200 MB最大 300 MB

如用户在使用过程中不小心将较大的二进制文件加入仓库,那么仓库大小很快就会超过规定的配额,用户可以通过升级到对应的套餐配额或对仓库进行历史改写瘦身,来解除系统对仓库推拉服务的锁定。

查看存储库中的大文件

git rev-list --objects --all | grep -E `git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -10 | awk 'print$1' | sed ':a;N;$!ba;s/\\n/|/g'`

git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -15 | awk 'print$1')"

改写历史,去除大文件

注意:下方命令中的 path/to/large/files 是大文件所在的路径,千万不要弄错!

git filter-branch --tree-filter 'rm -f path/to/large/files' --tag-name-filter cat -- --all
git push origin --tags --force
git push origin --all --force

如果在 git filter-branch 操作过程中遇到如下提示,需要在 git filter-branch 后面加上参数 -f

Cannot create a new backup.
A previous backup already exists in refs/original/
Force overwriting the backup with -f

并告知所有组员,push 代码前需要 pull rebase,而不是 merge,否则会从该组员的本地仓库再次引入到远程库中,导致仓库在此被码云系统屏蔽。

更加具体的操作可以点击文章 改写历史,永久删除git库的物理文件 查看


Gitee 存储库体积控制策略

码云已将服务端的钩子切换到 GNK (Gitee Native Hook),GNK 基于 C++ 编写,使用了 Git 环境隔离等高级特定,意味着大文件检测和存储库体积检测不会再有漏网之鱼。一些用户的存储库体积已经超过了 Gitee 配额限制,而之前的钩子检测存在缺陷,无法实时拦截大存储库和大文件,当切换到 GNK 后,这些用户修改他们的存储库却无法推送到 Gitee,这让他们产生了困扰。

《Gitee 存储库体积控制策略》就这一困扰解答若干问题,详情请见:https://my.oschina.net/GIIoOS/blog/3126211

以上是关于仓库体积过大,如何减小?的主要内容,如果未能解决你的问题,请参考以下文章

三个技巧,将Docker镜像体积减小90%

如何将PSD批量装换为JPG如何对PSD批量减小体积

如何解决webpack打包的文件体积过大的问题

开发那些事儿:如何解决js打包文件体积过大导致的网页加载慢问题?

解决 webpack 打包文件体积过大

减小发布到npm包的体积与避免重复依赖