关于 GitHub 的大小限制
GitHub 努力为所有 Git 仓库提供充足的存储空间,但对文件和仓库大小存在硬性限制。为了确保用户性能和可靠性,我们积极监控整体仓库健康的信号。仓库健康是各种相互作用因素的函数,包括大小、提交频率、内容和结构。
文件大小限制
GitHub 限制了仓库中允许的文件大小。如果您尝试添加或更新大于 50 MiB 的文件,您将收到 Git 的警告。更改仍将成功推送到您的仓库,但您可以考虑删除提交以最大程度地减少性能影响。有关更多信息,请参阅“从仓库历史记录中删除文件”。
注意:如果您通过浏览器将文件添加到仓库,则文件大小不能超过 25 MiB。有关更多信息,请参阅“将文件添加到仓库”。
GitHub 会阻止大于 100 MiB 的文件。
要跟踪超出此限制的文件,您必须使用 Git 大型文件存储 (Git LFS)。有关更多信息,请参阅“关于 Git 大型文件存储”。
如果您需要在仓库中分发大型文件,您可以创建 GitHub.com 上的发布,而不是跟踪这些文件。有关更多信息,请参阅“分发大型二进制文件”。
Git 不设计用于处理大型 SQL 文件。要与其他开发人员共享大型数据库,我们建议您使用文件共享服务。
仓库大小限制
我们建议仓库保持较小,理想情况下小于 1 GB,强烈建议小于 5 GB。较小的仓库克隆速度更快,并且更易于使用和维护。如果您的仓库过度影响我们的基础设施,您可能会收到来自 GitHub 支持的电子邮件,要求您采取纠正措施。我们尽量灵活,特别是对于拥有许多协作者的大型项目,并且会尽力与您合作找到解决方案。您可以通过有效地管理仓库的大小和整体健康状况来防止仓库影响我们的基础设施。您可以在 github/git-sizer
仓库中找到有关仓库分析的建议和工具。
外部依赖项会导致 Git 仓库变得非常大。为了避免用外部依赖项填充仓库,我们建议您使用包管理器。常用语言的流行包管理器包括 Bundler、Node 的包管理器 和 Maven。这些包管理器支持直接使用 Git 仓库,因此您不需要预先打包的源代码。
Git 不设计用作备份工具。但是,有许多专门设计用于执行备份的解决方案,例如 Arq、Carbonite 和 CrashPlan。
从仓库历史记录中删除文件
警告:这些过程将永久从您的计算机和 GitHub.com 上的仓库中删除文件。如果文件很重要,请在仓库外部的目录中创建本地备份副本。
删除在最近未推送的提交中添加的文件
如果文件是在您最近的提交中添加的,并且您尚未推送到 GitHub.com,您可以删除该文件并修改提交
-
打开 终端终端Git Bash。
-
将当前工作目录更改为您的本地仓库。
-
要删除文件,请输入
git rm --cached
$ git rm --cached GIANT_FILE # Stage our giant file for removal, but leave it on disk
-
使用
--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
-
将您的提交推送到 GitHub.com。
$ git push # Push our rewritten, smaller commit
删除在早期提交中添加的文件
如果您在早期提交中添加了文件,则需要将其从仓库的历史记录中删除。要从仓库的历史记录中删除文件,您可以使用 BFG Repo-Cleaner 或 git filter-repo
命令。有关更多信息,请参阅 "从仓库中删除敏感数据。"。
分发大型二进制文件
如果您需要在仓库中分发大型文件,可以在 GitHub.com 上创建发布。发布允许您打包软件、发布说明和指向二进制文件的链接,供其他人使用。有关更多信息,请访问 "关于发布。"。
我们不限制发布中二进制文件的总大小或用于交付它们的带宽。但是,每个单独的文件必须小于 2 GiB。