当前位置:

首页 > 编程开发 > Git怎么LFS管理大文件_Git LFS大文件存储使用教程【进阶】

Git怎么LFS管理大文件_Git LFS大文件存储使用教程【进阶】

根本原因是git lfs install仅配置本地钩子,未将已跟踪的大文件重写进LFS轨道,需先git lfs track指定文件类型,再git rm --cached后重新add以转换为LFS指针。 Git LFS初始化后push还是卡在大文件上 这事儿挺常见的:明明运行了 git lfs ins

根本原因是git lfs install仅配置本地钩子,未将已跟踪的大文件重写进LFS轨道,需先git lfs track指定文件类型,再git rm --cached后重新add以转换为LFS指针。

Git怎么LFS管理大文件_Git LFS大文件存储使用教程【进阶】

Git LFS初始化后push还是卡在大文件上

这事儿挺常见的:明明运行了 git lfs install,怎么推送大文件时还是慢如蜗牛,甚至失败?问题根源在于,那条命令仅仅是在本地配置了必要的钩子,它并不会“魔法般”地把仓库里已经存在的大文件自动迁移到LFS的轨道上。Git依然把它们当作普通文件来跟踪,推送时自然要传输完整的文件内容,瓶颈依旧。

所以,关键得手动把这些“漏网之鱼”纳入LFS的管理体系,并重新提交。具体步骤得按顺序来:

  • 首先,用 git lfs track "*.psd" 明确告诉Git哪些文件类型归LFS管(或者指定具体路径,比如 git lfs track "assets/large.zip")。这个操作会更新 .gitattributes 文件。
  • 紧接着,别忘了执行 git add .gitattributes。规则文件本身不提交,规则就不会生效。
  • 接下来是关键一步:对于已经被Git跟踪的大文件,需要用 git rm --cached 把它从暂存区移除(注意,这不会删除工作区里的实际文件),然后再用 git add 重新添加。这一次,Git就会根据 .gitattributes 里的规则,将其转换为一个轻量级的LFS指针文件。
  • 如果这些大文件在历史提交中已经存在了很久,涉及多次提交,那么就需要动用“历史重写”工具了:git lfs migrate import --include="*.zip"。不过得提醒一句,重写历史会影响所有协作者,操作后需要团队全员强制同步。

pull下来的是文本指针而不是真实文件

拉取代码后,发现本该是图片或模型的文件,打开却是一段奇怪的文本指针?别慌,这其实是LFS的正常工作机制。出现这种情况,通常意味着你的本地Git环境没有正确安装或启用LFS的“过滤器”(filter)。问题出在本地,而不是远程服务器,文件本身也没有损坏。

检查和修复的路径很清晰:

  • 先确认本机是否安装了Git LFS:运行 git lfs version,如果没有输出,就需要先安装(macOS用户可以用 brew install git-lfs,Windows用户建议从官网下载安装包)。
  • 安装后,运行 git lfs install(注意,不是init,clone操作也不会自动触发这个)。这个命令会在你的 .git/hooks/ 目录下部署必要的钩子,比如pre-push和post-checkout。
  • 如果你之前克隆仓库时没有启用LFS支持,现在可以直接运行 git lfs pull 来批量下载所有LFS管理的真实文件内容。当然,也可以针对单个文件使用 git lfs checkout 。
  • 额外注意:在某些持续集成(CI)环境或旧版本的Git中,可能需要显式启用过滤器,例如通过 -c filter.lfs.smudge=true 参数。

Git LFS上传失败报错"batch request failed: 401 Unauthorized"

代码推送(git push)明明成功了,但LFS文件上传却报401未授权错误?这往往不是你的仓库权限配置错了,而是凭证(token)过期了,或者没有正确地传递给LFS的服务端。Git和Git LFS使用了两套相对独立的认证流程:Git操作可能用的是SSH密钥或已缓存的密码,而LFS文件传输走的是独立的HTTP接口,需要特定的访问令牌。

常见的排查方向和解法如下:

  • 对于GitHub或GitLab,确保你使用的Personal Access Token包含了必要的权限。在GitHub上,需要 read:packages 和 write:packages 权限;在GitLab上,通常需要 api 权限。仅靠账户密码或SSH密钥是不行的。
  • 可以尝试运行 git lfs install --force 来强制重置凭证存储的配置,然后用 git credential reject 命令清除旧的缓存凭据(需要指定host和protocol)。
  • 检查LFS的端点(endpoint)地址是否正确:运行 git config --get-regexp 'lfs.*url'。例如,GitHub的LFS端点通常是 https://github.com//.git/info/lfs,这和原始的Git仓库URL不同。
  • 如果是企业自建的Git服务器,需要确认服务器端是否部署了 git-lfs-authenticate 钩子,并且该钩子能返回有效的JWT令牌。

用 git clone 拉项目时跳过LFS文件下载

有时候,我们只想快速拉取代码结构进行查看,不想等待几百MB甚至几个GB的LFS资源(如图片、模型)慢慢下载完。这能做到吗?当然可以,核心思路是暂时关闭LFS的“smudge”(涂抹)过滤器。但必须清楚后果:这样做之后,所有本应由LFS管理的文件,在本地都只会显示为文本指针,无法直接打开或使用。

有两种相对可控的方式:

  • 在克隆时直接附加参数:git clone -c filter.lfs.smudge=false <仓库URL>。这样克隆下来的仓库,所有LFS文件都是指针。之后如果需要某个具体文件,再单独执行 git lfs pull --include="path/to/file.bin" 来下载。
  • 全局禁用(请谨慎使用):运行 git config --global filter.lfs.smudge false。这适合一些只读的CI构建任务,但在开发者的机器上这样设置,很容易导致误以为文件缺失。
  • 需要注意一个“陷阱”:即使关闭了smudge过滤器,运行 git status 命令时,工作区仍然会显示是干净的(clean),因为Git确实管理着那些指针文件本身。要验证一个文件是否已下载了真实内容,最直接的方法是查看文件大小,或者使用 file <文件名> 命令查看文件类型。

最后,理解Git LFS有一个至关重要的点:它并没有改变Git底层的对象模型,其本质只是用一个小型文本指针文件,替换了原本巨大的二进制文件对象(blob),并将真实内容托管到独立的服务器上。因此,它的整个工作流程高度依赖于本地钩子、正确的凭证以及网络连接这三者同时就位——任何一个环节断掉,都可能让你陷入“仓库看起来一切正常,但文件实际无法使用”的尴尬状态。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
作者最新文章
编程开发 git
相关文章 更多
git创建分支bip的命令及完整操作步骤
git创建分支bip的命令及完整操作步骤

想知道如何用Git创建名为bip的分支?本文提供清晰的命令行操作步骤,包括本地创建、切换分支以及推送到远程仓库的方法,适合初学者快速上手。

GitLab新手创建项目并推送第一次提交的操作指南
GitLab新手创建项目并推送第一次提交的操作指南

本文指导GitLab新手完成创建项目并推送第一次提交的最小闭环。涵盖远程项目创建、本地仓库初始化、添加远程地址及执行git push。重点说明HTTPS与SSH认证差异、分支名(master/main)核对及提交验证标准,确保远程仓库真正建立。

在小说搜搜找不到想看的小说怎么办?小说搜搜换源功能使用详解【必学】
在小说搜搜找不到想看的小说怎么办?小说搜搜换源功能使用详解【必学】

小说搜搜搜索不到结果?五种实用解决方法帮你搞定 在小说搜搜里搜不到想看的书?这事儿其实挺常见。问题多半出在书源上——要么是默认的书源还没来得及收录,要么是原先的源数据失效了,更新没跟上。别急,下面这五条解决路径,基本能覆盖绝大多数情况,操作起来也不复杂。 一、通过阅读页调出换源入口手动切换 这个方法

怎么看B站UP主直播的真实人数?在线观看人数换算教程
怎么看B站UP主直播的真实人数?在线观看人数换算教程

“实时人气”不等于真实在线人数,需通过区分标识、验证列表与弹幕、第三方工具比对及互动加权扣除四步估算 当你点开B站的某个直播间,屏幕上那个“实时人气:12.8万”的数字可能让你心头一震,觉得场面火热。然而细看之下,弹幕寥寥无几,互动屈指可数——这场景是不是有点眼熟?问题来了:那个醒目的“人气值”,真

chrome搜索免验证入口
chrome搜索免验证入口

Chrome官方免验证入口为https://www.google.cn/chrome/,提供全平台安装包、免登录即用、本地化安全机制及引擎级性能优化。 到底该去哪里找正版、免费且无需繁琐验证的Chrome浏览器入口?这个问题困扰了不少网友。今天,我们就来直通核心,为大家详细拆解Chrome引擎的官方

Mac导入Android项目指南
Mac导入Android项目指南

网上关于在mac上导入现有项目的android studio操作教程多种多样,以下是我在实际操作中成功导入项目所采用的具体步骤及关键注意事项,供各位开发者参考。 网上的教程确实五花八门,但核心流程其实万变不离其宗。根据多年经验,想要在Mac上把已有的Android项目顺利导入Android Stud

过程式编程、面向对象编程、函数式编程、泛型编程、元编程
过程式编程、面向对象编程、函数式编程、泛型编程、元编程

命令式编程关注执行步骤,声明式描述目标,函数式强调无副作用。回调函数作为参数传递,可导致回调地狱,后由Promise解决。仿函数重载`operator()`,lambda更轻量。元编程生成代码,如模板、装饰器、宏,提升抽象能力。

如何配置Python项目的.gitignore文件_排除环境相关冗余文件
如何配置Python项目的.gitignore文件_排除环境相关冗余文件

Python项目配置.gitignore应排除__pycache__、虚拟环境(venv/.venv等)、IDE生成文件(.idea/.vscode等)及缓存目录。误提交后需用`gitrm--cached`移除索引。建议复用GitHub官方模板并验证规则有效性。

怎么在VSCode中查看Git冲突记录-图形化合并分支操作实操
怎么在VSCode中查看Git冲突记录-图形化合并分支操作实操

VSCode不保存历史冲突记录,仅在合并时实时标记冲突文件。冲突文件位于源代码管理面板的MERGECHANGES分组,带红色感叹号和冲突数量。点击文件以三栏合并编辑器显示当前分支、传入分支和结果区,供用户编辑解决冲突。

Atom如何使用GitHub Desktop?Atom与GitHub Desktop协同工作指南
Atom如何使用GitHub Desktop?Atom与GitHub Desktop协同工作指南

Atom与GitHubDesktop无法集成,需要两者在同一仓库目录下各自独立工作。GitHubDesktop不支持Atom作为默认编辑器,并且Atom的GitHub包已经弃用。建议直接打开文件夹,并且确保Git配置一致。GitHubDesktop不会自动刷新,需要手动刷新。推荐Atom负责编辑,而GitHubDesktop执行Git操作。

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

PDF教程
PDF教程

正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

Mac软件 更多
Postman macOS版
Postman macOS版
Mac

Postman是一套面向API全生命周期的开发与测试平台,可在Mac上发送和调试多种协议请求,管理集合、环境及认证信息,并完成脚本测试、模拟服务、监控、文档发布和团队协作。它适合开发、测试及运维人员使用,提供个人免费方案。

Docker Desktop macOS版
Docker Desktop macOS版
Mac

Docker Desktop 是 Docker 官方为 Mac 提供的容器开发环境,集成 Docker Engine、命令行工具、Compose、Build、Kubernetes 与图形化管理界面。

Android Studio macOS版
Android Studio macOS版
Mac

Android Studio 是 Google 面向安卓应用开发提供的官方集成开发环境,基于 IntelliJ IDEA 构建。它整合智能代码编辑、Gradle 构建、界面预览、设备模拟、性能分析、调试测试及 APK 分析等工具。

WINDOWS 更多
PixPix 网页版
PixPix 网页版
Windows

PixPix 是面向品牌、卖家和内容团队的在线 AI 图片视频创作平台,提供图视频 Agent、无限画布、图片生成、视频生成、自然语言编辑及商品套图、产品精修和带货视频等电商工具。

Postman Windows版
Postman Windows版
Windows

Postman 是面向 API 全生命周期的开发与协作平台。Windows 桌面版可用于构建和发送 HTTP、GraphQL、gRPC、WebSocket、MQTT 等请求,并提供环境变量、集合、脚本测试、模拟服务、监控、文档及团队工作区等

Docker Desktop Windows版
Docker Desktop Windows版
Windows

Docker Desktop 为 Windows 开发者提供集成式容器环境,内置 Docker Engine、命令行工具、Compose、Build 与 Kubernetes 等组件,可在本机完成镜像构建、容器运行、日志查看和资源管理。