Skip to main content

关于 GitHub 上的大文件

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

Platform navigation

关于 GitHub 的大小限制

          GitHub 试图为所有 Git 存储库提供丰富的存储,尽管对文件和  存在硬性限制,并且对存储库大小

提出了建议。

文件大小限制

          GitHub 限制存储库中允许的文件的大小。 如果尝试添加或更新大于 50 MiB的文件,将收到来自 Git 的警告。 更改仍将成功推送到仓库,但您可以考虑删除提交,以尽量减少对性能的影响。 有关详细信息,请参阅[从存储库的历史记录中移除文件](#removing-files-from-a-repositorys-history)。

注意

如果通过浏览器将文件添加到存储库,则该文件不能大于 25 MiB。 有关详细信息,请参阅“添加文件到仓库”。

          默认情况下,GitHub Enterprise Server阻止大于 100 MiB. 的文件。 
          但是,站点管理员可以为 你的 GitHub Enterprise Server 实例配置不同的限制。 有关详细信息,请参阅 [AUTOTITLE](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise)。

若要跟踪超出此限制的文件,必须使用 Git 大型文件存储 (Git LFS)。 有关详细信息,请参阅“关于 Git 大文件存储系统”。

如果需要在存储库中分发大型文件,可以创建 你的 GitHub Enterprise Server 实例 版本而不是跟踪文件。 有关详细信息,请参阅分发大型二进制文件

Git 不是为处理大型 SQL 文件而设计的。 要与其他开发人员共享大型数据库,建议使用文件共享服务。

存储库大小建议

建议仓库保持较小,理想情况下小于 1 GB,强烈建议小于 5 GB。 较小的仓库克隆速度更快,使用和维护更容易。

可通过有效管理存储库的大小和整体运行状况来避免存储库影响基础结构。 可以在 github/git-sizer 存储库中找到用于存储库分析的建议和工具。

从仓库的历史记录中删除文件

警告

这些过程将在您的计算机存储库中永久移除文件和你的 GitHub Enterprise Server 实例。 如果文件很重要,请在仓库外部的目录中创建本地备份副本。

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

如果文件是在最近的一次提交中添加的,且尚未推送到 你的 GitHub Enterprise Server 实例,则可以删除该文件并修改提交:

  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 Enterprise Server 实例:

    $ git push
    # Push our rewritten, smaller commit
    

删除之前提交中添加的文件

如果在之前的提交中添加了文件,则需要将其从仓库历史记录中删除。 要从仓库的历史记录中删除文件,建议使用 git filter-repo 命令。 有关详细信息,请参阅“从存储库中删除敏感数据”。

或者,如果你不想安装其他工具,可以使用交互式变基来删除有问题的提交。 要执行此操作:

  • 必须知道哪些提交对相关文件进行了添加或修改。
  • 这些提交必须仅属于一个分支。
  • 这些提交所属的这个分支在应用这些提交后不能有任何合并操作。

有关交互式变基的详细信息,请参阅“在命令行中使用 Git rebase”。 如果不确定是否满足使用交互式变基进行修复的必要条件,则应使用 git filter-repo

分发大型二进制文件

如果需要在存储库中分发大型文件,可以在 你的 GitHub Enterprise Server 实例 中创建发布。 发行版允许您打包软件、发行说明和指向二进制文件的链接,以供其他人使用。 有关详细信息,请访问“关于发行版”。