【Git】利用 LFS 突破 GitHub 大文件上传限制

Git LFS

利用 Git LFS 突破 GitHub 大文件上传限制

接触此技术背景

本人一直有将笔记备份的习惯,虽然已经有云同步,但是异地存档能再加多层保险

随时间推移,笔记内容也越来越多,我的笔记快照的体积越来越大,最近一次直接超出了 Git 单次推送的最大体积限制(100MB),在查询解决方法时,发现 Git 有一种叫 LFS 的技术(Large File Storage),他能很好的解决此问题。

技术介绍

Git LFS 是 Git 的一个开源扩展,旨在解决 Git 在处理大尺寸二进制文件(如视频、数据集、压缩包)时的性能瓶颈。

因为 Git 的设计初衷是管理文本文件,它会完整记录文件的每一个版本。对于像我这样提交这么大我体积的的 ZIP 包,如果修改一次再提交,仓库体积会立刻翻倍。

底层原理

那么它的思路就是把大文件给"拆开"。

LFS 的解决方法是:当你将文件放入 LFS 管理时,Git 仓库中存储的不再是那个 180MB 的实体,而是一个几百字节的指针文件。真实的二进制数据被存储在 GitHub 的 LFS 专用服务器上。

当执行 git checkout​ 时,LFS 会根据指针里的哈希值,自动从服务器下载对应的真实文件覆盖到你的工作区。这样本地的 .git 目录(版本库历史)依然保持精简,这个设计非常巧妙。

技术实现

我的最近一次提交是错误的,虽然提交了但是 push 失败了,故必须通过重置索引并应用 LFS 规则来修复。

  1. 首先要安装 LFS 扩展

    bash 复制代码
    # 在你本地的git工作区
    git lfs install
  2. 标记你的大文件由 LFS 来管理,以我的笔记快照为例,它的文件格式就是 .ZIP,那么命令就是

    bash 复制代码
    git lfs track "*.zip"

    注意:这会生成或更新 .gitattributes 文件,必须将其一同提交

  3. 重新添加并提交

    由于你之前的 Commit 已经包含了这个超限文件,需要先撤销上一次失败的提交,重新打包提交

    bash 复制代码
    # 撤销上一次 commit,但保留文件变动
    git reset --soft HEAD~1
    
    # 重新添加属性文件和大文件
    git add .
    git commit -m "commit message"
    git push origin master

执行到这一步,就已经能正确 push 上去了

后续维护

看到这会有疑惑:那么这次能提交成功了,后续该如何维护呢?

维护 LFS 需要关注 .gitattributes 文件、本地存储占用以及云端配额三个维度

  • 追踪管理

    你需要明确告诉 Git 哪些文件属于大文件。使用命令 git lfs track "你的文件"​。 这会更新 .gitattributes​ 文件。++每次更新必须提交这个属性文件++,否则协作成员拉取代码时,Git 会将其当作普通大文件处理,再次导致推送失败

  • 监控状态

    • 使用 git lfs ls-files:查看当前索引中哪些文件正受 LFS 管理
    • 使用 git lfs status:检查当前暂存区的对象状态
  • 本地存储清理

    长期频繁更新大文件会导致本地 .git/lfs​ 目录体积激增。使用 git lfs prune 可以安全删除本地不再被当前分支引用的旧版二进制块。

  • 配额管理

    GitHub 免费账户提供 1GB 存储和 1GB 每月下行流量,这要注意它的限制,如果配额耗尽,别人拉下来的包都是指针文本,不会真正下载内容

希望对你有帮助,祝您身体健康。

相关推荐
zh_xuan17 分钟前
把Android Library 上传到github并在工程中引用该远程仓库
android·github·远程仓库
盖丽男21 分钟前
使用 GitHub Actions 自动打包 Android APK
android·github
七颗糖很甜25 分钟前
预警!超级厄尔尼诺即将登场:2026-2027年全球气候或迎“极端狂暴模式”
java·大数据·python·算法·github
zhensherlock3 小时前
Protocol Launcher 系列:Working Copy 文件操作与高级命令详解
javascript·git·typescript·node.js·自动化·github·js
Dawn·张10 小时前
Unity小:GitHub部署静态网页
github
玖玖passion13 小时前
Windows 上部署 Hermes Agent 完整指南 - 让你的 AI 助手在 WSL2 中跑起来
前端·后端·github
AC赳赳老秦15 小时前
OpenClaw实战案例:用Agent实现每日工作日报自动生成+发送
人工智能·python·职场和发展·eclipse·github·deepseek·openclaw
Hommy8816 小时前
【开源剪映小助手】调试与故障排除
开源·github·aigc
摆烂z16 小时前
AI同时完成多个功能(Git WorkTree)
git
CoderJia程序员甲18 小时前
GitHub 热榜项目 - 日榜(2026-04-24)
人工智能·ai·大模型·github·ai教程