Git LFS 管理 Unity 大文件

Git 推送 Unity项目到服务器端仓库的时候,出现如下关键提示,表明推送内容太大,无法正常推送。

error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413

fatal: the remote end hung up unexpectedly Everything up-to-date

解决方案

安装 Git LFS服务,基于Git LFS服务推送;

  1. 在 Git Bash 窗口安装 LFS 服务;
  2. (如果有)撤销上一次的本地提交;
  3. 编辑 LFS 的配置文件(即LFS追踪哪些类型的文件);
  4. 单独添加 LFS 的配置文件并推送;
  5. 重新添加项目文件,进行推送;
bash 复制代码
# Windows(如果用Git Bash)
git lfs install

# 验证安装
git lfs version

# 若提示 git: 'lfs' is not a git command,需先下载安装 Git LFS:
# https://git-lfs.com/

# (如果有需要)撤销上一次的提交
git reset --soft HEAD~1  # 撤销最后一次提交(保留文件修改)

# 追踪Unity常见大文件类型(根据你的项目补充)
# 注意在仓库根目录下打开Git Bash进行如下指令
git lfs track "*.psd"
git lfs track "*.png"
git lfs track "*.jpg"
git lfs track "*.fbx"
git lfs track "*.asset"
git lfs track "*.unitypackage"
git lfs track "*.dll"
git lfs track "*.exe"

# 把.gitattributes文件加入版本控制(LFS的配置文件)
git add .gitattributes
git commit -m "配置Git LFS追踪Unity大文件"

# 推送

git add .  # 重新暂存(LFS会识别并处理大文件)
git commit -m "使用LFS推送Unity项目资源"

(不使用LFS)分块推送;(不适用于单个超大文件)

bash 复制代码
# 1. 撤销当前未推送的大提交(保留文件,仅撤销提交记录)
git reset --soft HEAD~1

# 2. 分批暂存+提交(比如先推代码文件,再推资源文件)
# 第一步:只暂存代码/配置文件(小体积)
git add *.cs *.meta .gitignore .gitattributes
git commit -m "推送Unity代码和配置文件"
git push origin master:main  # 先推小体积内容

# 第二步:暂存部分资源文件(分多次)
git add Assets/Scripts/ Assets/Scenes/  # 只加部分资源
git commit -m "推送部分Unity资源(批次1)"
git push origin master:main

# 重复第二步,分批推送剩余资源,直到全部推完

其他

为什么修改 http.postBuffer 会无效?

git config http.postBufferGit 客户端侧的缓冲区配置 ,作用是:Git 在向远程推送数据时,会先把待推送的数据包缓存到本地内存 / 磁盘,攒到 postBuffer 设定的大小后,再一次性发送给服务端。

  • 它的设计目的:解决「客户端频繁发送过小数据包,导致网络传输效率低、超时断开」的问题(比如网络极慢时,发一堆小包容易断);
  • 它的核心局限:只能调整客户端 "怎么发",无法改变服务端 "能收多少"

而这里提到的问题根源是:服务端的「硬性大小限制」(HTTP 413)

推送的数据包是XGiB大小的存在,而远程 Gitea 服务器(或前端的 Nginx/Apache)会设置 client_max_body_size 这类参数(比如默认 1GB/100MB),这个参数是服务端的 "红线":

  • 只要单次 HTTP 请求的数据包大小超过这个值,服务端会直接返回 HTTP 413(请求实体过大),并断开连接 ------ 这是服务端的主动拒绝,和客户端怎么发、缓冲区多大无关;
  • 修改 http.postBuffer 只是把客户端的 "发送缓冲区" 调大了,但发送的仍是一个 XGB 的超大数据包,依然会触发服务端的大小限制,所以毫无作用。
相关推荐
魔士于安6 小时前
unity 音乐会场景 unity2022
游戏·unity·游戏引擎·贴图·模型
Mediary8 小时前
Unity is running with Administrator privileges, which isnot supported...
unity
吹牛不交税9 小时前
visualstudio把项目绑定git仓库
git
c238569 小时前
git常见错误和ssh验证推送
运维·git·ssh
火山上的企鹅9 小时前
Codex实战:APP远程升级服务搭建(四)Node 服务端自动识别 APK 信息
android·服务器·git·github·qgc
游乐码10 小时前
Unity基础(十四)场景异步加载
unity·游戏引擎
mxwin11 小时前
Unity Shader URP:法线在空间变换上的特殊性
unity·游戏引擎·shader
nnsix11 小时前
Unity 动态批处理、静态批处理、GPU Instaning、SRP Batcher 笔记
笔记·unity·单一职责原则
charlee4412 小时前
Unity在安卓端如何调试输出信息
android·unity·adb·游戏引擎·真机调试
徐子元竟然被占了!!12 小时前
Git学习
git·学习·elasticsearch