将git仓库瘦身

一个小工具的仓库居然有7个g了,每次clone都要等好久,在网上找的方法,实际了几个小时才成功瘦身,做一次记录

一、排查是哪些历史文件占用了内存,下面是查询最大的5个文件

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

 执行示例:

二、将这些占用比较大的文件从git历史中移除

git filter-branch --force --index-filter 'git rm -rf --cached --ignore-unmatch 上面查询的路径和文件名' --prune-empty --tag-name-filter cat -- --all

 执行示例:

 

三、执行下面命令真正删除和推送到远程仓库使远程仓库变小

rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now
git push origin --tags --force
git push origin --all --force

示例:

最后从7个G瘦身到了1个G 

注意事项:

1、报 You are not allowed to force push code to a protected branch on this project或者error: failed to push some refs to

就需要登录git执行下面操作,Settings -> Repository -> Protected branch -> unprotect

2、一定要保证你本地的代码是最新,不然最后2条命令会将其他人上传的代码给删除了

参考链接:彻底删除git中的大文件

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

<think>嗯,用户遇到了git push失败的问题,错误信息显示仓库大小超过了限制。首先,我需要理解用户使用的命令是git push origin master --force,这通常用于强制推送,可能会覆盖远程仓库的历史。不过错误提示的关键点在于远程仓库的大小超过了配额,Gitee的配额是1024MB,而当前仓库大小是1843.512MB。 接下来,我得分析可能的原因。用户可能在推送大量文件,或者仓库的历史提交中包含了大文件,导致总体积超标。Gitee对免费用户的仓库大小有限制,超过后无法推送。这时候需要帮助用户找到减小仓库体积的方法。 可能的解决方案包括清理仓库历史中的大文件,或者使用Gitee提供的仓库GC功能。但用户可能不熟悉这些操作,需要一步步指导。另外,用户可能误用了--force参数,但问题根源在仓库大小,所以重点不在强制推送的风险,而是如何缩减体积。 需要提醒用户,清理历史可能会影响协作,如果有其他人克隆过仓库,他们的本地副本可能会出问题。另外,可以考虑将大文件移到Git LFS(如果支持的话),或者删除不必要的文件,然后提交并推送。但删除现有文件可能需要重写提交历史,这又需要强制推送,但此时用户已经因为仓库过大被拒绝,所以可能需要先本地清理再推送。 另外,查看Gitee的帮助链接,可能建议进行仓库GC,这可以优化仓库,但需要用户有仓库管理员权限。用户可能需要进入仓库设置运行GC,看看是否能减少仓库占用空间。如果GC后仍然超过限制,可能需要删除一些历史提交或文件。 总结步骤应该是:1. 运行仓库GC;2. 检查并删除大文件;3. 重写历史;4. 强制推送。但需要注意,这些操作都有风险,需要用户谨慎处理,并备份当前状态。</think>你遇到的 `git push` 错误是由于 **Gitee 代码仓库体积超过配额限制**导致的。以下是详细分析和解决方案: --- ### 错误关键信息解读 ``` remote: Repo size: 1843.512MB, exceeds quota 1024MB remote: Push rejected for repository [size exceeds limit] ``` - **根本原因**:你的 Gitee 仓库总大小已超过免费用户的 **1GB 配额限制**。 - **直接诱因**:此次推送包含大量数据(输出显示 `852.27 MiB` 写入),导致仓库体积突破限制。 --- ### 分步解决方案 #### 1. 优先尝试 Gitee 的仓库瘦身功能 Gitee 提供了自动化仓库清理工具: 1. 浏览器访问仓库设置页面:`https://gitee.com/vjk0909/graduate/settings#git-gc` 2. 找到 **"仓库存储优化"** 或 **"触发仓库GC"** 按钮并点击 3. 等待 GC 完成后检查仓库大小(可能需要几分钟) 如果 GC 后体积仍超限,继续以下步骤。 --- #### 2. 本地清理大文件历史 需要定位并删除历史提交中的大文件: ```bash # 安装 git 大文件扫描工具 brew install git-extras # macOS # 或 sudo apt-get install git-extras # Ubuntu/Debian # 扫描仓库历史中大文件 git big-files -n 10 # 使用 BFG 工具清理历史(更高效) java -jar bfg.jar --delete-files {大文件名} --no-blob-protection . ``` --- #### 3. 重写提交历史 ```bash # 强制重写本地历史 git reflog expire --expire=now --all git gc --prune=now --aggressive # 再次尝试推送(强制覆盖远程) git push origin master --force ``` --- #### 4. 备选方案 如果仍无法解决: - **升级 Gitee 会员**:购买企业版获取更大存储空间 - **迁移到其他平台**:GitHub 提供 100GB 仓库容量(但国内访问较慢) - **拆分仓库**:将大文件分离到独立仓库 - **使用 Git LFS**:对大文件使用专用存储(需平台支持) --- ### 注意事项 - `--force` 参数会覆盖远程历史,确保你是仓库唯一协作者 - 重写历史后,其他开发者需要 `git fetch --all && git reset --hard origin/master` - 建议后续添加 `.gitignore` 文件过滤二进制/大文件 Gitee 官方帮助文档:https://gitee.com/help/articles/4232
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值