Github上传大文件

你想知道GitHub上传大文件项目的方法,核心解决方案是使用GitHub官方提供的Git LFS(Large File Storage,大文件存储) 工具,它专门解决Git原生无法高效处理大文件、GitHub仓库有单文件大小限制(普通推送单文件最大25MB,超过会直接失败)的问题,以下是完整、可直接操作的步骤,涵盖Windows/macOS/Linux全平台:

一、核心前提:了解GitHub文件大小限制

  • 普通Git推送:单文件最大25MB,超过会被拒绝;
  • 使用Git LFS:支持单文件最大5GB,完全满足大文件项目上传需求;
  • 仓库总大小建议不超过100GB(GitHub官方软限制,过大可能影响克隆/拉取速度)。

二、步骤1:安装Git LFS

方式1:通过包管理器安装(推荐,macOS/Linux/Windows)
  • macOS(Homebrew) :终端执行
    brew install git-lfs
  • Linux(Debian/Ubuntu) :终端执行
    sudo apt-get update && sudo apt-get install git-lfs
  • Linux(CentOS/RHEL) :终端执行
    sudo yum install git-lfs
  • Windows(Chocolatey) :管理员终端执行
    choco install git-lfs
方式2:手动下载安装(适配所有系统)

前往Git LFS官方地址:https://git-lfs.com/,根据自己的系统下载对应安装包,双击完成安装(Windows需注意勾选"添加到系统PATH")。

三、步骤2:全局初始化Git LFS

安装完成后,首次使用必须执行全局初始化(只需执行1次,所有Git仓库均可复用),终端执行:

bash 复制代码
git lfs install

执行成功会提示:Git LFS initialized.,表示初始化完成。

四、步骤3:追踪项目中的大文件(核心步骤)

进入你的本地项目根目录(先确保项目已通过git init初始化为Git仓库,若已关联GitHub仓库可跳过git init),通过git lfs track命令指定需要追踪的大文件类型/具体文件,Git LFS会自动对这些文件进行特殊处理(不把文件内容存入Git历史,而是存到LFS服务器)。

常用追踪命令(按需选择)
  1. 追踪指定后缀的所有大文件 (推荐,比如压缩包、安装包、数据集等):

    bash 复制代码
    # 示例:追踪所有.zip/.rar/.iso/.tar.gz大文件,可根据你的文件类型修改
    git lfs track "*.zip"
    git lfs track "*.rar"
    git lfs track "*.iso"
  2. 追踪单个具体大文件 (适合大文件无固定后缀/仅需追踪个别文件):

    bash 复制代码
    # 示例:追踪项目下的data/超大数据集.csv文件
    git lfs track "data/超大数据集.csv"
  3. 追踪某个文件夹下的所有文件 (适合整个文件夹都是大文件):

    bash 复制代码
    # 示例:追踪project/large_files/下的所有文件
    git lfs track "project/large_files/*"
关键提示

执行git lfs track后,项目根目录会自动生成一个 .gitattributes 文件 ,这个文件用于记录Git LFS的追踪规则,必须一起提交到仓库(否则其他人克隆仓库时,大文件无法正常拉取)。

五、步骤4:常规Git提交&推送到GitHub

完成大文件追踪后,按照普通Git项目的提交、推送流程操作即可,Git LFS会在后台自动处理大文件的上传:

bash 复制代码
# 1. 将所有文件(包括.gitattributes)加入暂存区
git add .
# 2. 提交本地修改(备注信息按需修改)
git commit -m "feat: 上传大文件项目,通过Git LFS追踪压缩包/数据集"
# 3. 关联GitHub远程仓库(若已关联可跳过,替换为你的仓库地址)
git remote add origin https://github.com/你的用户名/你的仓库名.git
# 4. 推送到GitHub(首次推送加-u,后续直接git push)
git push -u origin main

推送时会看到Git LFS的进度条,显示大文件的上传状态,耐心等待即可(大文件上传速度取决于网络)。

六、验证大文件是否已成功追踪(可选)

若想确认大文件是否被Git LFS正确追踪,可在项目根目录执行以下命令,会列出所有已追踪的大文件:

bash 复制代码
git lfs ls-files

推送成功后,进入GitHub仓库页面,查看大文件旁是否有LFS标识,有则表示成功。

七、补充:已提交的大文件如何补救?

如果之前未使用Git LFS,已将大文件提交到Git历史(导致推送失败),需先从Git历史中移除大文件,再用Git LFS追踪,步骤如下:

bash 复制代码
# 1. 从Git历史中移除指定大文件(替换为你的大文件路径)
git filter-branch --force --index-filter "git rm --cached --ignore-unmatch 你的大文件路径" --prune-empty --tag-name-filter cat -- --all
# 2. 清理Git历史缓存
git reflog expire --expire=now --all && git gc --prune=now --aggressive
# 3. 重新用Git LFS追踪该大文件
git lfs track "你的大文件路径"
# 4. 再次执行add/commit/push即可

八、核心注意事项

  1. .gitattributes 文件不可删除/修改(除非你想取消某些文件的LFS追踪),必须随项目一起提交;
  2. 克隆使用了Git LFS的仓库时,直接执行git clone 仓库地址即可,Git会自动拉取LFS管理的大文件(若拉取失败,可执行git lfs pull手动拉取);
  3. Git LFS的存储空间:GitHub免费账户提供1GB LFS存储空间1GB每月带宽,若不够可升级付费套餐;
  4. 避免用Git LFS追踪过多小文件:Git LFS设计用于大文件(建议100MB以上),小文件用普通Git管理即可,否则会影响仓库性能。

总结

GitHub上传大文件项目的唯一标准方案是Git LFS ,核心步骤可概括为:
安装Git LFS → 全局初始化 → 追踪大文件(生成.gitattributes) → 常规Git提交推送 ,关键是通过git lfs track指定大文件,并保证.gitattributes随项目提交,即可突破GitHub的25MB单文件限制,支持最大5GB的单文件上传。

相关推荐
徐小夕8 小时前
借助AI,1周,0后端成本,我开源了一款Office预览SDK
前端·vue.js·github
CoderJia程序员甲9 小时前
GitHub 热榜项目 - 日榜(2026-03-18)
ai·大模型·llm·github·ai教程
逛逛GitHub10 小时前
硅谷大佬把自己 Claude Code 武器库给开源了,1 周就 2 万点赞。
github
星浩AI10 小时前
清华团队开源!我给孩子制作了 AI 互动课堂,手把手教你给孩子做一个
人工智能·后端·github
NGC_661111 小时前
滑块验证:从原理到实战,拆解人机验证的核心逻辑
github
无限进步_13 小时前
深入解析C++容器适配器:stack、queue与deque的实现与应用
linux·开发语言·c++·windows·git·github·visual studio
irpywp16 小时前
autoresearch:自主目标导向迭代的无限游戏
开源·github·karpathy·autoresearch
汪海游龙16 小时前
03.19 AI 精选:开源异步编程 Agent 框架
github·hacker news
NocoBase16 小时前
【教程】用 NocoBase 2.0 搭建一个极简的 IT 工单系统
人工智能·开源·github·无代码
sandwu16 小时前
OpenClaw 3.13 正式发布:新增 Chrome DevTools MCP、会话绑定、插件生态全面升级
人工智能·github