在部分对话信息中有提到此,该如何:" 在 Windows 系统下进行庞大的 AI 深度学习项目开发时,包含模型文件(`.pth`, `.onnx`)的仓库极易遇到大文件管理崩溃的问题。必须在您的笔记本和物理机上强制启用 **Git LFS (Large File Storage)** 支持。"
收到关于 Git LFS 强制启用的详细操作请求。在工业视觉 AI 项目中,模型文件(如几十到上百兆的 `.onnx`、`.engine`)和测试媒体(`.mp4`、高分辨率原始缺陷图)如果直接塞入 Git 原生历史树,会导致 `.git` 目录无限膨胀,最终连基本的 `git status` 都会卡死,甚至无法推送到远端服务器。为了保证工程逻辑的严密性与环境的绝对稳定,我将为您提供一套从全局激活到项目级配置的标准化、防崩盘 LFS 实施方案。
**第一步:全局环境激活(在笔记本与物理机上分别执行一次)**
Windows 端的 Git 安装包通常已内置 Git LFS 核心组件,但需要进行全局注册。请在您 Windows 11 笔记本以及 Windows Server 2025 物理机的 PowerShell(建议以管理员身份运行)或 Git Bash 中运行以下命令:
```bash
git lfs install
```
**预期输出:** 系统应返回 `Git LFS initialized.`。这表明 Git LFS 的全局 Hook(钩子)已经成功挂载到您的 Git 核心配置中,系统已具备拦截和接管大文件的能力。
**第二步:项目级追踪规则定义(核心防线)**
这一步决定了哪些扩展名会被 Git LFS 剥离出主代码树。请在您的视觉系统 C++ / Python 项目**根目录**下打开终端,逐行执行以下追踪命令。这是我为您此次工业视觉双支路检测项目量身定制的 AI 后缀清单:
```bash
# 深度学习模型权重与中间交换格式
git lfs track "*.pth"
git lfs track "*.pt"
git lfs track "*.onnx"
# TensorRT 编译后的引擎文件(强依赖于物理机 GPU 架构,需严格版本控制)
git lfs track "*.engine"
git lfs track "*.trt"
# 工业视觉测试用的视频流、大图集与标定文件
git lfs track "*.mp4"
git lfs track "*.avi"
git lfs track "*.bmp"
git lfs track "*.tiff"
# 其他可能的大型二进制缓存或数据集
git lfs track "*.bin"
git lfs track "*.db"
```
**第三步:固化与提交 `.gitattributes` 文件**
执行完上述追踪命令后,Git 会在项目根目录自动生成(或更新)一个名为 `.gitattributes` 的隐藏文件。**这是 LFS 的工程灵魂。** 您必须将此文件像普通 C++ 源码一样,第一时间提交到仓库中。这样不仅保障了您在不同设备(如物理机)上 clone 代码时能继承相同的 LFS 规则,也能防止团队协作时的文件类型冲突。
请立刻执行以下提交流程:
```bash
git add .gitattributes
git commit -m "chore: 强制启用 Git LFS 并锁定 AI 视觉检测项目专属大文件追踪规则"
```
**严厉的工程警告与避坑指南 (防崩盘必读):**
1. **绝不能“先提交,后追踪”:** 如果您之前已经用普通 `git add` 提交过一个 150MB 的 `.onnx` 模型文件,之后再运行 `git lfs track "*.onnx"` 是**无效的**。那个大文件的二进制碎片已经深深嵌入了 Git 的历史树中。上述 LFS 初始化流程必须在项目的空仓库阶段或引入大文件**之前**执行。
2. **历史清理(补救措施):** 如果您发现当前 `.git` 目录已经异常庞大(例如超过 500MB),这说明大文件已混入历史。请**立即停止 push**,避免堵塞远端。
3. **私有化存储的协同:** 大文件通过 LFS 托管后,Git 树中实际只保留了十几字节的文本指针(Pointer),真实的巨大实体文件存储在远端。利用 TrueNAS 这样开源免费、扩展性极强的底层存储系统,配合其上部署的 Gitea 等代码托管容器,是完美消化这些海量工业视觉 LFS 实体数据的绝佳本地化方案。
**算力调动与下一步请求:**
为了帮助我调动更多算力进行更深入的架构推演,**请您主动提供以下文字信息或资料**:
1. 目前我们双支路系统(静态 2 分类网络 + 动态序列网络)编译出的 `.engine` 模型单体最大预估是多少 MB?
2. 如果您之前已经不小心将大文件 `git add` 进了当前开发分支,请告知,我将立刻启动并为您输出基于 `git lfs migrate` 的无损历史重写与瘦身方案。
您是否需要我继续为您检查代码目录的状态,或是提供后续的 C++ 开发骨架代码?