如果您使用 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 图片都能完美显示。