Git 以及 Github 等服务都是针对基于文本的轻量级代码文件构建和优化的,而且很少看到大于几 GB 的存储库。但是,跟踪大文件通常很有用,为了更容易,Git 提供了大文件存储 (LFS) 扩展。
Git 在技术上没有最大文件大小,但是一旦你开始达到一定大小的文件,它就会开始崩溃。Github 将这个最大值定义为每个存储库 100 MB。
这个软限制归结为 Git 在内部存储数据的方式。尽管向用户显示了更改列表,称为差异,Git 实际上使用基于快照的方法在内部存储数据,并使用它来重建差异,而不是相反。
这对于少量数据来说是可以的,但是这意味着每次修改文件时都必须进行快照,因此如果文件很大,它会很快占用大量空间。Git 在内部使用“packfiles”对此进行了一些管理,它可以进行一些垃圾收集,但处理大文件的问题仍然存在。
因此,提出了一个名为Git 大文件存储 (LFS)的解决方案。基本上,Git LFS 不是将实际文件存储在存储库中,而是简单地存储一个指向该文件实际位置的指针。当您的 Git 客户端想要克隆存储库或签出文件时,它会改为从 Git LFS 下载它。
这意味着您不再需要下载每个版本化的对象来克隆存储库。LFS 使存储库的启动和运行速度更快,因为 Git 只关心指针,指针很小,并且只获取它需要的数据。
主要的缺点是您现在不能使用包文件,这意味着您将需要为文件的每个副本提供额外的存储空间。但是,LFS 允许您拥有一个具有最佳克隆时间的大型存储库,这不会影响开发人员的体验。
要使用它,您需要一个配置为使用 Git LFS 的服务器。它只是 Git 的扩展,因此您无需安装任何额外的软件或设置服务器来处理数据存储。
Github 支持 Git LFS,但每个存储库只允许 10 GB。这适用于普通回购以及 LFS 回购。但是,从“设置”>“计费”中购买更多数据非常容易,而且 50 GB 每月只需额外支付 4.20 美元:
您还需要为带宽付费,因为更新大文件会复制文件并且必须发送整个文件。
如果您想托管特别大的存储库,并且想在自己的硬件上进行,我们建议使用自托管 Gitlab。您可以阅读我们关于设置个人 Gitlab 实例的指南以了解更多信息。
您需要从他们的网站下载并安装 Git LFS。
然后,在 Windows 上打开 Git 或 Git Bash,并运行 install 命令以验证它是否正常工作:
git lfs install
Git LFS 与 Git 本身有些不同。它不会自动跟踪超过一定大小的文件;您需要手动将文件添加到 Git LFS 才能开始使用它。您可以为此使用通配符语法:
git lfs track "*.dat"
您可以使用ls-files 和status 查看 Git LFS 子系统本身的状态:
git lfs ls-files
git lfs status
如果您来自现有的 Git 存储库,或者在没有先在 Git LFS 中跟踪的情况下意外提交了某些内容,则需要使用该migrate 工具将数据移动到 LFS。
例如,导入与通配符匹配的所有现有文件:
git lfs migrate import --include="*.mp4"
或者只是将所有内容发送到 LFS:
git lfs migrate import --everything
您可能需要git push --force 覆盖分支历史记录。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/wlcs_6305/article/details/122605610
内容来源于网络,如有侵权,请联系作者删除!