如何把大文件(100M以上)上传到github

GitHub 对文件大小有严格限制,普通存储库中单个文件不能超过 100MB,整个存储库建议小于 1GB,强烈建议小于 5GB。以下是处理大文件的常见方法和步骤:

使用 Git LFS 管理大文件

Git LFS (Large File Storage) 是 Git 的扩展工具,用于管理超出 GitHub 限制的大文件。它通过将大文件存储在仓库外部,仅在仓库中保留引用,从而提高性能和效率。

配置 Git LFS

  • 安装 Git LFS:
1
git lfs install
  • 跟踪大文件类型:
1
git lfs track "*.ext"
  • 提交 .gitattributes 文件:
1
2
3
git add .gitattributes

git commit -m "Track large files with Git LFS"
  • 添加并提交大文件:
1
2
3
git add large_file.ext

git commit -m "Add large file using Git LFS"
  • 推送到远程仓库:
1
git push origin main

拉取含大文件的仓库

如果克隆的仓库中没有大文件本体,而是指针文件,可以运行以下命令下载完整文件:

1
git lfs pull

转换历史数据到 LFS

对于已经提交到仓库中的大文件,可以使用以下命令迁移到 LFS:

1
2
3
git lfs migrate import --include="*.ext"

git push --force

完成后,清理 .git 文件夹:

1
2
3
git reflog expire --expire-unreachable=now --all

git gc --prune=now

使用 GitHub Releases 分发大文件

如果文件超过 Git LFS 的限制(如单文件超过 2GB),可以通过 GitHub Releases 分发大文件。创建发行版时,可以上传大文件并生成下载链接。

[!IMPORTANT]

注意事项

  • Git 不是备份工具。对于超大文件或数据库,建议使用云存储服务(如 Amazon S3、Google Cloud Storage)。
  • 避免外部依赖项膨胀仓库。使用包管理器(如 npm、Maven)管理依赖项。
  • 定期优化仓库大小。使用工具如 git-sizer 分析和管理存储库。

通过以上方法,可以有效管理和分发大文件,避免 GitHub 文件大小限制带来的问题。