大仓库提效指南

在代码仓库体积较大或网络状况不佳的情况下,推拉仓库需要大量的时间,随之而来的可能还有超时等问题。目前,Codeup已经支持了 Git LFS(大文件存储)和部分克隆、浅克隆等特性,以缓解此类问题,降低本地磁盘空间的占用,减少推拉仓库所需的时间,可以在大仓库的场景下带来更加高效的使用体验。

Git LFS适用的场景

Git LFS,即 Git 大文件存储,如果代码库有以下特征,那么非常建议你开始使用 Git LFS:

向代码仓库中提交了非文本文件,导致仓库体积迅速膨胀

在某些场景下,需要向仓库中提交一些非文本文件,例如美术资源、算法模型、编译产物等。由于二进制文件体积较大且更难压缩,加上 Git 会保存这些文件的每一历史版本,仓库体积迅速膨胀。

在克隆仓库时,所有文件的所有历史版本均会被下载,这也是克隆时间增长的根源。

使用Git LFS,我们可以配置特定后缀的文件使用 Git LFS 管理,克隆时不下载这些文件的历史版本,大大降低克隆的数据量及所需的时间。

Git LFS的使用及注意事项

以下详尽的文档将帮助你开始使用 Git LFS,请参考:

如何使用 Git LFS

LFS 迁移指南

浅克隆适用的场景

应用构建

应用构建只需要最新版本的代码,不必要花费大量时间下载全部代码。这时候可以使用浅克隆特性,截断仓库的历史,仅下载给定深度内的提交用于最新构建,可以大幅降低拉取时间。

浅克隆的使用,请参阅git clone 帮助文档

部分克隆适用的场景

部分克隆特性,允许克隆仓库时只克隆部分的仓库。

与浅克隆不同,部分克隆不截断仓库的历史信息,缺失的文件则会在被用到时按需下载。

在以下场景,可以考虑使用部分克隆特性:

仓库的体积较大

即使没有向仓库中提交二进制文件,随着开发者的持续提交,仓库的体积也会随之逐渐增长,克隆时间也逐渐增加。

在开发时,我们往往基于代码的最新版本进行修改,并偶尔的使用到历史信息。

使用部分克隆特性,我们可以在克隆时过滤历史版本,加快克隆速度,并在用到历史信息时自动下载。

微服务单根代码仓

在这种场景下,所有的代码都存放于一个大的单根代码仓中,例如安卓开发。

部分克隆配合稀疏检出,可以使仓库中的不同成员只下载其关心的部分代码,不需要每次都下载全部整仓内容。

我们也为部分克隆提供了详尽的帮助文档,请参阅:

部分克隆(Partial clone)介绍

总结

  • Git LFS:适用于仓库中包含了各类二进制文件导致的仓库体积膨胀场景。对于仓库体积超过 Git 容量阈值的情况,需要将二进制文件移至 Git-LFS 进行管理;

  • 浅克隆:适用于只需要克隆给定深度内的仓库,并且不需要仓库的历史信息的情况。在构建加速等场景下非常适用;

  • 部分克隆:可以保留仓库的历史信息,并按照对象的类型或者配合稀疏检出按照目录下载对象,在用到缺失的对象时自动按需下载;

这些特性的使用,并不只局限于上文所列场景,功能也不相冲突,可以根据实际情况,灵活结合使用。

如果在使用过程中有任何疑问,欢迎加入钉群(32027065)给我们反馈。

更多视频讲解材料点击查看:Git仓库膨胀的两种常见原因和解决方案