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

通过压缩Git提交历史节省存储空间的可行方案咨询

方案一:保留提交历史并清理大文件(推荐需保留历史的场景)

你的核心问题是历史提交中积累了大量二进制文件(含原Git LFS托管的资源),Git对二进制文件的快照存储机制(改动时生成完整新版本)导致了严重的体积冗余。以下是可保留提交历史的清理方案:

  1. 先备份仓库
    重写Git历史是不可逆操作,务必先复制整个仓库文件夹到安全位置,避免数据丢失。

  2. 安装git filter-repo
    这是官方推荐替代git filter-branch的高效工具,根据系统安装:

    • Linux:包管理器安装(如apt install git-filter-repo)
    • macOS:Homebrew安装(brew install git-filter-repo)
    • Windows:下载官方二进制文件并添加到环境变量
  3. 定位大文件
    运行以下命令找出仓库中体积最大的20个对象,明确需要清理的文件类型或具体路径:

    git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -20
    

    输出第三列为文件大小(字节),可直接定位占用空间最多的资源。

  4. 重写历史移除大文件
    根据定位结果,用git filter-repo移除所有历史中的目标文件:

    • 移除特定类型的资源(如所有图片、音频、3D模型):
      git filter-repo --path-glob '*.png' --invert-paths
      git filter-repo --path-glob '*.mp3' --invert-paths
      git filter-repo --path-glob '*.fbx' --invert-paths
      
    • 移除单个具体文件:
      git filter-repo --path 'Assets/Textures/LargeBackground.png' --invert-paths
      

    若曾用Git LFS,可查看.gitattributes的追踪规则,对应移除所有LFS托管过的文件类型。

  5. 压缩本地仓库
    清理历史后,移除本地冗余的Git对象:

    git reflog expire --expire=now --all
    git gc --prune=now --aggressive
    
  6. 强制推送到GitHub
    由于重写了历史,需强制覆盖远程仓库:

    git push origin --force --all
    git push origin --force --tags
    

    注意:若有其他开发者克隆过此仓库,他们的本地仓库会与远程不一致,需重新克隆或手动同步。

方案二:丢弃历史,只保留最终版本(最快最彻底的压缩)

若无需保留提交历史,仅需展示最终项目代码,此方法最直接:

  1. 创建无历史的新分支:

    git checkout --orphan new-main
    
  2. 添加当前所有文件并提交:

    git add .
    git commit -m "Final game release"
    
  3. 替换原主分支:

    git branch -D main
    git branch -m main
    
  4. 强制推送到GitHub:

    git push origin main --force
    
额外优化:完善.gitignore配置

避免Unity自动生成文件占用仓库空间,在.gitignore中添加:

# Unity autogenerated files
Library/
Temp/
Obj/
Logs/
UserSettings/
*.pidb
*.pdb
*.unityproj
*.sln
*.suo
*.user
*.userprefs
*.pidb.meta

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 14:01:30