You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitLab仓库显示大小远大于本地文件总和,如何删除隐藏的冗余文件?

解决GitLab仓库历史冗余大文件清理方案

前置注意事项

  • 操作前请完整备份本地和远程仓库,避免历史提交丢失
  • 提前通知所有协同开发者,清理完成后必须删除原有本地仓库,重新克隆更新后的远程仓库,禁止从旧本地仓库直接推送内容,否则会将旧的冗余历史重新同步到远程

原因说明

你执行普通git rm不生效的核心原因是:sound-controller.rar并未存在于当前最新提交的工作区中,而是保存在更早的历史提交的Git对象里,常规文件操作命令无法修改历史提交记录,因此无法彻底删除该文件。

操作步骤

1. 本地清理历史提交中的冗余文件

推荐使用Git官方推荐的git filter-repo工具完成历史改写,操作命令如下:

# 进入本地仓库根目录后执行
git filter-repo --path sound-controller.rar --invert-path

该命令会遍历仓库所有提交历史,完全删除所有提交中出现过的sound-controller.rar文件。

如果你更习惯使用BFG Repo-Cleaner工具,也可以执行如下操作:

# 运行BFG删除指定大文件
java -jar bfg.jar --delete-files sound-controller.rar ./
# 清理本地残留的无效Git对象
git reflog expire --expire=now --all && git gc --prune=now --aggressive

2. 强制推送修改后的历史到GitLab

推送前需要先进入GitLab对应仓库的设置页面,临时关闭对应分支的「保护分支」规则,否则强制推送会被系统拦截,之后执行推送命令:

# 推送所有分支的修改后历史
git push origin --force --all
# 如需同步清理标签的历史,额外执行
git push origin --force --tags

推送完成后可以恢复之前的保护分支规则。

3. 触发GitLab远程存储空间回收

GitLab默认不会自动清理已删除的历史对象,需要手动触发回收:

  • 进入GitLab仓库「设置」-「通用」-「高级」设置页面
  • 找到「清理仓库存储」选项,点击触发清理操作
    等待5-10分钟后,GitLab页面的存储空间统计就会更新为正确值。

验证效果

清理完成后重新克隆该仓库,可确认克隆大小已恢复为1MB左右,且所有历史提交中均不存在sound-controller.rar文件。

内容的提问来源于stack exchange,提问作者petro.engine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 15:00:02