处理 GitHub 上的大型文件 处理 GitHub 上的大型文件

处理 GitHub 上的大型文件

Git LFS如果您使用 git 进行源代码管理,那么当您尝试使用 GitHub 或其他存储库包含大型文件时,可能会遇到问题。

我说的“大”是指几十兆字节的文件,当然也包括 ISO 镜像等更大的文件。

我在研究一个项目时遇到了这个问题(完整文章即将发布),这个项目会生成 6000×9000 像素的大型 PNG 图片,每张图片大小超过 30MB。代码是用 Python 写的,我想添加一些示例,但是当我尝试推送到 GitHub 时,git 一直报错,直到一个小时后我才停止。

事实证明,Git 真的不太喜欢大文件。更糟糕的是,如果你有很多经常修改的大文件,你的仓库会变得非常庞大,因为所有之前的版本都会被修改。所以,如果你的流程中有“重新构建 ISO 镜像,然后更新仓库”这样的环节,那么以后你肯定会遇到很多麻烦。

就我而言,我只需要几张 .PNG 图片,而且这些图片可能永远不会更改。最佳实践是将它们单独存储在代码库之外,但既然我使用的是 GitHub,那么把所有东西都放在里面就更方便了。

解决 GitHub 限制的方案: git lfs 。来自他们的 GitHub

Git LFS是一个命令行扩展和规范,用于使用 Git 管理大型文件。

客户端使用 Go 语言编写,并提供适用于 Mac、Windows、Linux 和 FreeBSD 的预编译二进制文件。

如何使用它

安装非常简单,只需使用软件包管理器即可。在我的 Mac 上,我使用 Homebrew:

 brew install git-lfs

然后进行设置:

 git lfs 安装

现在,在你的代码仓库中,你需要告诉 Git LFS 它应该处理哪些文件。在我的例子中,我指定了“所有 PNG 文件:

 git lfs track "*.png"

然后,您需要添加 .gitattributes 文件,Git LFS 会将相关信息存储在该文件中:

 git add .gitattributes

剩下的部分大家都很熟悉了:

 git add example.png
git commit -m "添加了 example.png"
git push -u origin main

之后,我的巨型 .PNG 图片都能完美显示。