You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用Git LFS上传Unity项目至GitHub遇GH001大文件错误及提交冻结问题

解决Unity项目Git LFS推送失败(GH001)及提交卡住的问题

我来帮你搞定这个Git LFS的坑!Unity项目里的大文件和自动生成目录确实容易出问题,尤其是你提到的提交卡住+GH001错误,大概率是历史提交里残留了大文件,或者追踪规则没配对,咱们一步步来修复:

第一步:清除Git历史里的大文件痕迹(关键!)

GH001错误很多时候不是当前提交的问题,而是之前已经把大文件提交到Git历史里了——哪怕你后来用LFS追踪,GitHub还是会检测到历史中的大文件。所以先彻底清理历史:

  • 首先找到那个触发错误的大文件路径(比如clickToMove/Library/xxx.asset或者整个Library目录),执行以下命令移除历史中的缓存文件:
    git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch clickToMove/Library/*' --prune-empty --tag-name-filter cat -- --all
    
    👉 把clickToMove/Library/*替换成你实际的大文件/目录路径,如果是单个文件就写完整路径。
  • 清理完成后,强制推送到远程(注意:如果是多人协作项目,一定要提前和队友沟通,这会改写Git历史):
    git push origin master --force
    

第二步:正确配置Unity项目的Git规则

Unity的Library/Temp/这些是本地自动生成的缓存目录,完全不需要提交!你之前追踪这些目录反而会导致不必要的大文件上传,先把它们加入忽略列表:

  1. 创建或更新.gitignore文件,添加以下内容:
    # Unity自动生成目录
    Library/
    Temp/
    Obj/
    # IDE配置文件
    *.sln.DotSettings
    *.csproj.DotSettings
    
  2. 用Git LFS只追踪Assets目录下的资源文件(比如纹理、模型、音频这些真正的大文件),不要追踪整个目录,而是按文件后缀精准匹配:
    # 追踪Unity常用的大资源格式
    git lfs track "*.psd"
    git lfs track "*.png"
    git lfs track "*.jpg"
    git lfs track "*.jpeg"
    git lfs track "*.fbx"
    git lfs track "*.obj"
    git lfs track "*.mp3"
    git lfs track "*.wav"
    git lfs track "*.prefab"
    git lfs track "*.unity"
    # 或者更简洁的,直接指定Assets下的所有这类文件
    git lfs track "clickToMove/Assets/**/*.{psd,png,jpg,jpeg,fbx,obj,mp3,wav,prefab,unity}"
    
  3. 保存.gitattributes文件(LFS追踪规则会自动写入这个文件)。

第三步:重新执行提交推送流程

现在把错误添加的文件移除缓存,重新提交正确的内容:

# 移除之前错误添加的整个项目缓存
git rm --cached -r clickToMove
# 添加忽略文件和LFS规则文件
git add .gitignore .gitattributes
# 只提交Assets目录(这才是Unity项目需要共享的核心内容)
git add clickToMove/Assets
# 提交
git commit -m "Add Unity project with LFS-tracked assets"
# 推送
git push origin master

第四步:解决提交卡住的问题

如果推送还是卡住,大概率是网络或LFS缓存的问题,可以试试:

  • 清理LFS本地缓存:git lfs prune
  • 降低LFS并发传输数,避免网络拥堵:git config lfs.transfer.maxConcurrent 1
  • 改用SSH协议推送(比HTTPS更稳定),先修改远程地址:
    git remote set-url origin git@github.com:你的用户名/你的仓库名.git
    

最后提醒

Unity项目永远不要提交Library/Temp/这些目录——它们不仅占空间,还会因为本地环境不同产生大量冲突,这是Unity开发者用Git的基本常识哦!

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

火山引擎 最新活动