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的单文件上传。

相关推荐
慢慢开始吧14 小时前
Redmi Note 7 Pro (Violet) 爆改满血 Linux 掌上服务器指南
github
模型时代16 小时前
GitHub Codespaces存在RoguePilot漏洞,可致GitHub令牌泄露
github
webkubor17 小时前
AI 时代的 robots.txt:深度解析 llms.txt 规范与项目“AI 原生化”改造实战
github
i学长的猫19 小时前
obsidian md github站点
github
jack@london19 小时前
使用Railway
github
CoderJia程序员甲20 小时前
GitHub 热榜项目 - 日榜(2026-02-25)
人工智能·ai·大模型·github·ai教程
给老吕螺丝1 天前
提升国内访问GitHub稳定性的解决方案:Steamcommunity 302工具详解 (Ver.13.0.05+)
经验分享·github
阿里嘎多学长1 天前
2026-02-25 GitHub 热点项目精选
开发语言·程序员·github·代码托管
黑白极客1 天前
ACP大模型认证刷题工具开源,助力高效备考
java·ai·github·llama·认证
无限进步_1 天前
138. 随机链表的复制 - 题解与详细分析
c语言·开发语言·数据结构·算法·链表·github·visual studio