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

已提交大文件至GitLab,如何彻底从存储中移除?

彻底移除GitLab仓库中的大文件解决方案

你之前用git filter-branch没生效,主要是因为这个工具已被官方弃用,且操作缺少强制推送和GitLab端的垃圾回收步骤。下面是更可靠的操作流程:

步骤1:用官方推荐的git filter-repo重写历史

git filter-repo是Git官方指定替代git filter-branch的工具,处理历史更稳定:

  • 先安装工具:
    • Debian/Ubuntu:sudo apt install git-filter-repo
    • macOS:brew install git-filter-repo
    • 通用方式:pip install git-filter-repo
  • 克隆仓库的镜像版本(避免破坏本地原有仓库):
    git clone --mirror <你的GitLab仓库完整URL>
    
  • 进入镜像仓库目录:
    cd <仓库名称>.git
    
  • 执行过滤命令彻底移除project.rar文件:
    git filter-repo --path project.rar --invert-paths
    

步骤2:强制推送重写后的历史到远程

因为修改了仓库提交历史,必须用强制推送覆盖远程旧历史:

git push --force

步骤3:处理本地原有仓库(可选)

如果你本地还有旧仓库副本,不要直接拉取,建议:

  • 删除本地旧仓库,重新克隆远程仓库
  • 或者执行以下命令重置本地分支:
    git fetch origin
    git reset --hard origin/<你的分支名>
    

步骤4:触发GitLab的垃圾回收

GitLab不会立刻删除旧历史对象,需手动触发回收释放存储空间:

  1. 打开GitLab仓库设置页面
  2. 找到「Repository」选项卡,选择「Cleanup」
  3. 点击「Start cleanup」按钮,等待GitLab完成回收

注意事项

  • 若有其他协作者,务必通知他们重新克隆仓库,不要在旧本地仓库继续开发,否则会引发提交冲突
  • 确保你拥有仓库的强制推送权限(GitLab中需开启「Allow force push」权限)

内容的提问来源于stack exchange,提问作者aref razavi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 02:03:18