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

如何移除Git仓库中docs文件夹的历史以节省存储空间?

移除docs/文件夹历史以减小Git仓库体积

一、重写Git历史,清除docs/的旧版本记录

由于仓库历史中积累了大量docs/文件夹的旧大文件,需要通过重写Git历史彻底移除这些记录,只保留当前最新的docs/内容:

  1. 本地克隆仓库并备份当前docs/内容

    # 克隆仓库到本地
    git clone https://github.com/你的用户名/你的仓库名.git
    cd 你的仓库名
    
    # 把当前docs/备份到仓库外,避免操作丢失
    cp -r docs/ ../docs-latest-backup/
    
  2. 用git filter-repo清除所有历史中的docs/记录
    git filter-repo是Git官方推荐替代git filter-branch的工具,高效且不易出错。执行以下命令移除所有历史提交里的docs/文件夹:

    git filter-repo --path docs/ --invert-paths
    

    该命令会遍历所有历史提交,删除其中涉及docs/的所有文件变更,仅保留data/等其他文件夹的完整历史。

  3. 恢复最新的docs/内容并提交
    将备份的docs/复制回仓库,提交到重写后的历史中:

    cp -r ../docs-latest-backup/ docs/
    git add docs/
    git commit -m "Restore latest docs content"
    
  4. 强制推送到远程仓库
    因为重写了Git历史,必须强制推送覆盖远程仓库的旧历史:

    git push origin main --force
    

    (若你的主分支不是main,替换为对应的分支名,比如master)

二、调整GitHub Actions流程,避免未来仓库膨胀

原更新流程每次会产生新提交(先删除docs/再添加新内容),导致历史不断积累大文件。可修改流程,直接覆盖docs/内容并修改最新提交,避免新增历史记录:

  1. 修改更新脚本
    移除原来的git rm *和单独的push步骤,改为:

    # 解压tar包到docs/目录(覆盖原有内容)
    tar xvf 你的压缩包.tar -C docs/
    
    # 暂存docs/的所有变更
    git add docs/
    
    # 修改最新提交,替换docs/内容,不产生新提交
    git commit --amend --no-edit
    
    # 安全强制推送(比--force更安全,避免覆盖他人未推送的变更)
    git push origin main --force-with-lease
    
  2. 配置Actions权限
    默认的GITHUB_TOKEN通常没有强制推送权限,需在Workflow中使用**个人访问令牌(PAT)**替代,或在仓库设置的Actions权限中开启允许强制推送。

三、清理远程仓库垃圾

重写历史后,GitHub远程仓库的旧历史对象会暂时保留,一般等待1-7天会自动被垃圾回收。若想尽快清理,可联系GitHub支持,或等待系统自动处理,之后仓库体积会明显减小。

注意事项

  • 重写历史后,所有本地克隆过该仓库的副本都需重新克隆,旧历史已被覆盖,拉取会产生冲突。
  • 操作前务必备份整个仓库,避免数据丢失。
  • data/文件夹的历史不会受上述操作影响,会完整保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 03:25:25