Git LFS 推送失败问题分析与解决方案
2025-05-17 06:13:09作者:彭桢灵Jeremy
问题现象分析
在使用 Git LFS (Large File Storage) 进行大文件推送时,用户遇到了 HTTP 405 错误。具体表现为:普通 Git 操作(如 pull 和 push)可以正常执行,但当尝试推送 LFS 对象时,系统返回"LFS: Client error from HTTP 405"错误信息。
HTTP 405 状态码表示"Method Not Allowed",即服务器理解请求方法(如 GET、POST 等),但目标资源不支持该方法。在 Git LFS 的场景下,这通常意味着 LFS 服务端配置存在问题,导致无法正确处理 LFS 的上传请求。
环境配置检查
从用户提供的环境信息可以看出:
- 系统运行在 Windows 平台上,使用 Git 2.39.2 和 Git LFS 3.3.0
- Git 仓库通过 HTTPS 协议访问,地址为
https://192.168.100.155/unreal-project/unreal_test.git - LFS 端点自动设置为
https://192.168.100.155/unreal-project/unreal_test.git/info/lfs - 系统通过 Docker 容器部署 GitLab 服务
根本原因定位
经过分析,问题根源在于 GitLab 容器的端口配置不正确。当 GitLab 运行在 Docker 容器中时,存在两个关键端口配置:
- 容器对外暴露的端口映射(Docker 端口映射)
- GitLab 内部配置的 HTTP/HTTPS 监听端口(Nginx 配置)
这两个端口必须保持一致,否则会导致 LFS 服务无法正常工作。具体表现为:
- 普通 Git 操作可能通过 SSH 或其他协议工作正常
- 但 LFS 操作需要特定的 HTTP 端点,当端口不匹配时,服务器会拒绝请求
解决方案
方案一:修改 GitLab 外部 URL 配置
编辑 GitLab 的配置文件(容器内路径为 /etc/gitlab/gitlab.rb),确保 external_url 设置中包含正确的端口号:
external_url 'http://<服务器IP>:<端口号>'
修改后需要重新配置 GitLab:
gitlab-ctl reconfigure
gitlab-ctl restart
方案二:调整 Nginx 监听端口
如果希望保持外部 URL 不变,可以单独修改 Nginx 的监听端口:
nginx['listen_port'] = <端口号>
同样需要执行重新配置和重启操作。
方案三:使用端口转发
对于无法直接修改 GitLab 配置的情况,可以通过路由器或防火墙设置端口转发规则,将外部请求的特定端口转发到容器内部的实际端口。
验证步骤
- 确认 Git LFS 端点 URL 是否正确包含端口号
- 测试普通 HTTP 访问 GitLab 网页界面
- 使用
git lfs env命令检查 LFS 配置 - 尝试推送小型的 LFS 对象进行测试
最佳实践建议
- 在 Docker 部署 GitLab 时,预先规划好端口映射方案
- 保持
external_url配置与实际的访问地址完全一致 - 对于生产环境,建议使用标准 HTTP/HTTPS 端口(80/443)
- 定期检查 Git LFS 的服务可用性
- 考虑使用 GitLab 的 Omnibus 包安装方式,简化配置管理
通过以上解决方案,可以有效地解决 Git LFS 推送时遇到的 HTTP 405 错误,确保大文件版本控制流程的顺畅运行。
登录后查看全文
热门项目推荐
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0153- DDeepSeek-V4-ProDeepSeek-V4-Pro(总参数 1.6 万亿,激活 49B)面向复杂推理和高级编程任务,在代码竞赛、数学推理、Agent 工作流等场景表现优异,性能接近国际前沿闭源模型。Python00
LongCat-Video-Avatar-1.5最新开源LongCat-Video-Avatar 1.5 版本,这是一款经过升级的开源框架,专注于音频驱动人物视频生成的极致实证优化与生产级就绪能力。该版本在 LongCat-Video 基础模型之上构建,可生成高度稳定的商用级虚拟人视频,支持音频-文本转视频(AT2V)、音频-文本-图像转视频(ATI2V)以及视频续播等原生任务,并能无缝兼容单流与多流音频输入。00
auto-devAutoDev 是一个 AI 驱动的辅助编程插件。AutoDev 支持一键生成测试、代码、提交信息等,还能够与您的需求管理系统(例如Jira、Trello、Github Issue 等)直接对接。 在IDE 中,您只需简单点击,AutoDev 会根据您的需求自动为您生成代码。Kotlin03
Intern-S2-PreviewIntern-S2-Preview,这是一款高效的350亿参数科学多模态基础模型。除了常规的参数与数据规模扩展外,Intern-S2-Preview探索了任务扩展:通过提升科学任务的难度、多样性与覆盖范围,进一步释放模型能力。Python00
skillhubopenJiuwen 生态的 Skill 托管与分发开源方案,支持自建与可选 ClawHub 兼容。Python0112
项目优选
收起
暂无描述
Dockerfile
733
4.76 K
deepin linux kernel
C
31
16
Ascend Extension for PyTorch
Python
652
797
Claude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed.
Get Started
Rust
1.25 K
153
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
1.1 K
611
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.01 K
1.01 K
华为昇腾面向大规模分布式训练的多模态大模型套件,支撑多模态生成、多模态理解。
Python
147
237
昇腾LLM分布式训练框架
Python
168
200
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
434
395
暂无简介
Dart
987
253