使用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 -- --allclickToMove/Library/*替换成你实际的大文件/目录路径,如果是单个文件就写完整路径。 - 清理完成后,强制推送到远程(注意:如果是多人协作项目,一定要提前和队友沟通,这会改写Git历史):
git push origin master --force
第二步:正确配置Unity项目的Git规则
Unity的Library/、Temp/这些是本地自动生成的缓存目录,完全不需要提交!你之前追踪这些目录反而会导致不必要的大文件上传,先把它们加入忽略列表:
- 创建或更新
.gitignore文件,添加以下内容:# Unity自动生成目录 Library/ Temp/ Obj/ # IDE配置文件 *.sln.DotSettings *.csproj.DotSettings - 用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}" - 保存
.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




