跳至主要内容

关于 GitHub 上的大文件

GitHub 限制了您可以在常规 Git 仓库中跟踪的文件大小。了解如何跟踪或删除超出限制的文件。

平台导航

关于 GitHub 上的大小限制

GitHub 努力为所有 Git 仓库提供充足的存储空间,但文件和仓库大小存在硬性限制。为了确保用户性能和可靠性,我们积极监控整体仓库健康的信号。仓库健康是各种相互作用因素的函数,包括大小、提交频率、内容和结构。

文件大小限制

GitHub 对存储库中允许的文件大小有限制。如果您尝试添加或更新大于 50 MiB 的文件,您将收到 Git 的警告。更改仍将成功推送到您的存储库,但您可以考虑删除提交以最大程度地减少性能影响。有关更多信息,请参阅“从存储库历史记录中删除文件”。

注意:如果您通过浏览器将文件添加到存储库,则文件大小不能超过 25 MiB。有关更多信息,请参阅“将文件添加到存储库”。

GitHub 会阻止大于 100 MiB 的文件。

要跟踪超出此限制的文件,您必须使用 Git Large File Storage (Git LFS)。有关更多信息,请参阅“关于 Git Large File Storage”。

如果您需要在存储库中分发大型文件,您可以创建 GitHub.com 上的版本,而不是跟踪这些文件。有关更多信息,请参阅“分发大型二进制文件”。

Git 不适合处理大型 SQL 文件。要与其他开发人员共享大型数据库,我们建议您使用文件共享服务。

存储库大小限制

我们建议存储库保持较小,理想情况下小于 1 GB,强烈建议小于 5 GB。较小的存储库克隆速度更快,并且更易于使用和维护。如果您的存储库过度影响我们的基础设施,您可能会收到来自 GitHub 支持的电子邮件,要求您采取纠正措施。我们尽量灵活,特别是对于拥有许多协作者的大型项目,并且会尽一切努力与您合作找到解决方案。您可以通过有效地管理存储库的大小和整体健康状况来防止您的存储库影响我们的基础设施。您可以在 github/git-sizer 存储库中找到存储库分析的建议和工具。

外部依赖项会导致 Git 存储库变得非常大。为了避免用外部依赖项填充存储库,我们建议您使用包管理器。常见语言的流行包管理器包括 BundlerNode 的包管理器Maven。这些包管理器支持直接使用 Git 存储库,因此您不需要预先打包的源代码。

Git 不适合用作备份工具。但是,有很多专门设计用于执行备份的解决方案,例如 ArqCarboniteCrashPlan

从存储库历史记录中删除文件

警告:这些过程将永久从您的计算机和 GitHub.com 上的存储库中删除文件。如果文件很重要,请在存储库外部的目录中创建本地备份副本。

删除最近未推送提交中添加的文件

如果文件是在您最近的提交中添加的,并且您尚未推送到 GitHub.com,您可以删除该文件并修改提交。

  1. 打开 终端终端Git Bash

  2. 将当前工作目录更改为您的本地存储库。

  3. 要删除文件,请输入 git rm --cached

    $ git rm --cached GIANT_FILE
    # Stage our giant file for removal, but leave it on disk
    
  4. 使用 --amend -CHEAD 提交此更改

    $ git commit --amend -CHEAD
    # Amend the previous commit with your change
    # Simply making a new commit won't work, as you need
    # to remove the file from the unpushed history as well
    
  5. 将您的提交推送到 GitHub.com

    $ git push
    # Push our rewritten, smaller commit
    

删除在早期提交中添加的文件

如果您在早期提交中添加了文件,则需要将其从存储库的历史记录中删除。要从存储库的历史记录中删除文件,可以使用 BFG Repo-Cleaner 或 git filter-repo 命令。有关更多信息,请参阅 "从存储库中删除敏感数据。"。

分发大型二进制文件

如果您需要在存储库中分发大型文件,可以在 GitHub.com 上创建发布。发布允许您打包软件、发布说明和指向二进制文件的链接,供其他人使用。有关更多信息,请访问 "关于发布。"。

我们不对发布中的二进制文件的总大小或用于传递它们的带宽设置限制。但是,每个单独的文件必须小于 2 GiB。