当前位置: 首页 > news >正文

使用git-lfs管理大文件

当我们使用git管理文件版本的时候,经常会有一些比较大的文件,比如一些模型文件,或者备份的文档资料等,这些文件属于如果太大,就会给git的管理带来困难。

所以,对于这种大文件,一般我们就会采用lfs工具,来单独管理这种文件。

使用lfs管理文件之后,进行推送的时候,大文件会被替换成一个引用地址,拉取的时候,又会自动地替换回来。

安装lfs

lfs没有跟git一起,需要单独安装。

在Fedora等系统里,可以直接通过

dnf install git-lfs

安装。

安装的最后,会看到输出:

>>> Scriptlet 输出: 
>>> Git LFS initialized.                  
>>>                                         
完成!

表示初始化成功。之后就可以使用git lfs命令了。

如果是Ubuntu等系统,则是

apt install git-lfs

跟踪大文件

在项目源代码里,需要先建立对大文件的跟踪,之后才能加入大文件,进行管理。

建立对大文件的跟踪的命令是track。

如:

git lfs track *.mp4

执行之后,我们会看到项目根目录下面,多了一个.gitattributes文件,这就是管理大文件的配置文件。

之后再加入的.mp4结尾的文件,将自动进入lfs的管理。

如:

git add a.mp4

提交历史中的大文件

有的时候,当我们想使用lfs的时候,大文件已经在git里提交过了。

这时候就需要使用lfs的migrate命令来进行迁移,之后再强行推送到远端仓库。

如:

# 迁移所有历史中的指定文件(例如*.mp4和*.zip)
git lfs migrate import --include="*.mp4,*.zip" --everything

# 检查迁移后的历史是否正确
git log --stat

# 强制推送所有分支到远程仓库
git push origin --force --all
# 强制推送所有标签到远程仓库
git push origin --force --tags

其中,

  • --include 参数指定要迁移的文件模式,支持通配符。
  • --everything 表示处理所有分支和标签的历史。

通过以上步骤,历史提交中的大文件将被替换为LFS指针,并纳入LFS管理。

.gitattributes文件的-text

在 .gitattributes 文件中,-text 是一个 Git 属性设置,用于明确禁止 Git 对特定文件进行换行符(line endings)的自动转换。

如:

*.png -text
*.zip -text
*.exe -text

注:这里的语法有点儿令人费解。text明明表示文本,为什么使用-text却是让lfs按照二进制的方法管理文件呢?其实,这里的语法是一个-,再加上text,即减去text属性的意思。

所以,实际上这个text有三种使用方式:

  • text:允许 Git 自动转换换行符(例如 *.sh text)。
  • text=auto:让 Git 自动判断是否为文本文件(默认行为)。
  • -text:强制禁用换行符转换,即使文件看起来像文本。

强制拉取与推送

当推送或拉取仓库时,Git LFS 会自动下载真实文件,无需手动操作。

但是,也有偶尔出错的情况,比如网络问题,或者其它错误使用,导致了拉取之后,本地的大文件仅仅是一个文件指针(文件很小,里面只是一个路径)。

这时候,就需要手动执行lfs pull命令:

git lfs pull

再比如出现大文件推送失败的时候,也可以使用lfs push命令:

git lfs push

相关文章:

  • Giteki 认证:无线产品进入日本市场的关键保障
  • STM32通用定时器结构框图
  • Linux常见使用场景
  • c# ftp上传下载 帮助类
  • 【Java SE】String类详解
  • Android 图片裁剪 压缩等处理记录
  • Linux内核软中断分析
  • Linux命令大全:从入门到高效运维
  • Flutter 2025生态全景:从跨端到嵌入式开发的新机遇
  • Mobaxterm SSH连接设置保存密码
  • Oracle到MySQL实时数据互通:透明网关跨库查询终极方案
  • Bugku 秋名山车神
  • playwright保存storage_state登录信息踩坑
  • AI 驱动自动化控制:从 “智” 造到 “慧” 控的跃迁
  • DeepSeek大模型应用开发新模式
  • OpenGL —— 流媒体播放器 - ffmpeg解码rtsp流,opengl渲染yuv视频(附源码,glfw+glad)
  • TCP/IP协议簇
  • 外星人入侵(python设计小游戏)
  • 在 firewalld 中删除自建 zone 的方法
  • SCT2A26异步降压转换器,输入电压范围从5.5V到100V,2A持续输出电流,4A峰值电流限制,替代LM5013
  • 济南网站建设流程/外国搜索引擎登录入口
  • jsp做网站的流程/长沙网站排名推广
  • 网站设计与开发专业/微信指数是搜索量吗
  • 安徽安庆房价/seo优化是怎么优化的
  • 成都个人网站制作公司/网络游戏推广平台
  • 免费做请帖的网站/太原seo团队