你想知道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服务器)。
常用追踪命令(按需选择)
-
追踪指定后缀的所有大文件 (推荐,比如压缩包、安装包、数据集等):
bash# 示例:追踪所有.zip/.rar/.iso/.tar.gz大文件,可根据你的文件类型修改 git lfs track "*.zip" git lfs track "*.rar" git lfs track "*.iso" -
追踪单个具体大文件 (适合大文件无固定后缀/仅需追踪个别文件):
bash# 示例:追踪项目下的data/超大数据集.csv文件 git lfs track "data/超大数据集.csv" -
追踪某个文件夹下的所有文件 (适合整个文件夹都是大文件):
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即可
八、核心注意事项
.gitattributes文件不可删除/修改(除非你想取消某些文件的LFS追踪),必须随项目一起提交;- 克隆使用了Git LFS的仓库时,直接执行
git clone 仓库地址即可,Git会自动拉取LFS管理的大文件(若拉取失败,可执行git lfs pull手动拉取); - Git LFS的存储空间:GitHub免费账户提供1GB LFS存储空间 和1GB每月带宽,若不够可升级付费套餐;
- 避免用Git LFS追踪过多小文件:Git LFS设计用于大文件(建议100MB以上),小文件用普通Git管理即可,否则会影响仓库性能。
总结
GitHub上传大文件项目的唯一标准方案是Git LFS ,核心步骤可概括为:
安装Git LFS → 全局初始化 → 追踪大文件(生成.gitattributes) → 常规Git提交推送 ,关键是通过git lfs track指定大文件,并保证.gitattributes随项目提交,即可突破GitHub的25MB单文件限制,支持最大5GB的单文件上传。