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

相关推荐
极智-9966 小时前
GitHub 热榜项目-日榜精选(2026-02-03)| AI智能体、终端工具、RAG技术等 | claude-mem、99、termux-app等
人工智能·网络安全·github·ai智能体·llm应用·rag技术·torrent工具
骂我的人都死了7 小时前
DevOps架构部署
运维·ubuntu·docker·k8s·github·devops·python3.11
Alaaaaaaan7 小时前
[DevOps]使用github-action工具部署docker容器(实现提交代码一键推送部署到服务器)
服务器·前端·docker·容器·github
CryptoRzz8 小时前
德国股票数据 API 对接实战(DAX 指数与实时行情)
websocket·区块链·github·分布式账本
Tipriest_8 小时前
GitHub Gist 功能详解:从入门到进阶
github·gist
困惑阿三9 小时前
CloudflarePages+GitHub零成本博客搭建手册
github
猫头虎10 小时前
2026全网最热Claude Skills工具箱,GitHub上最受欢迎的7大Skills开源AI技能库
langchain·开源·prompt·github·aigc·ai编程·agi
CoderJia程序员甲11 小时前
GitHub 热榜项目 - 日榜(2026-02-03)
git·ai·开源·llm·github
MicrosoftReactor13 小时前
技术速递|使用 GitHub Copilot SDK 将智能体集成到任何应用中
ai·github·copilot