在代码仓库体积较大或网络状况不佳的情况下,推拉仓库需要大量的时间,随之而来的可能还有超时等问题。目前,Codeup已经支持了Git LFS(大文件存储)和部分克隆、浅克隆等特性,以缓解此类问题,降低本地磁盘空间的占用,减少推拉仓库所需的时间,可以在大仓库的场景下带来更加高效的使用体验。
Git LFS适用的场景
Git LFS,即Git大文件存储,如果代码库有以下特征,那么非常建议您开始使用Git LFS:
向代码仓库中提交了非文本文件,导致仓库体积迅速膨胀
在某些场景下,需要向仓库中提交一些非文本文件,例如美术资源、算法模型、编译产物等。由于二进制文件体积较大且更难压缩,加上 Git 会保存这些文件的每一历史版本,仓库体积迅速膨胀。在克隆仓库时,所有文件的所有历史版本均会被下载,这也是克隆时间增长的根源。
使用Git LFS,可以配置特定后缀的文件使用 Git LFS 管理,克隆时不下载这些文件的历史版本,大大降低克隆的数据量及所需的时间。
Git LFS的使用及注意事项
以下详尽的文档将帮助您开始使用 Git LFS,请参见:
浅克隆适用的场景-应用构建
应用构建只需要最新版本的代码,不必要花费大量时间下载全部代码。这时候可以使用浅克隆特性,截断仓库的历史,仅下载给定深度内的提交用于最新构建,可以大幅降低拉取时间。浅克隆的使用,请参见git clone 帮助文档。
部分克隆适用的场景
部分克隆特性,允许克隆仓库时只克隆部分的仓库。与浅克隆不同,部分克隆不截断仓库的历史信息,缺失的文件则会在被用到时按需下载。在以下场景,可以考虑使用部分克隆特性:
仓库的体积较大
即使没有向仓库中提交二进制文件,随着开发者的持续提交,仓库的体积也会随之逐渐增长,克隆时间也逐渐增加。在开发时,往往基于代码的最新版本进行修改,并偶尔的使用到历史信息。使用部分克隆特性,可以在克隆时过滤历史版本,加快克隆速度,并在用到历史信息时自动下载。
微服务单根代码仓
在这种场景下,所有的代码都存放于一个大的单根代码仓中,例如安卓开发。部分克隆配合稀疏检出,可以使仓库中的不同成员只下载其关心的部分代码,不需要每次都下载全部整仓内容。
部分克隆相关帮助文档,请参见:部分克隆(Partial clone)介绍。
总结
以下这些特性的使用,并不只局限于上文所列场景,功能也不相冲突,可以根据实际情况,灵活结合使用:
Git LFS:适用于仓库中包含了各类二进制文件导致的仓库体积膨胀场景。对于仓库体积超过 Git 容量阈值的情况,需要将二进制文件移至 Git-LFS 进行管理。
浅克隆:适用于只需要克隆给定深度内的仓库,并且不需要仓库的历史信息的情况。在构建加速等场景下非常适用。
部分克隆:可以保留仓库的历史信息,并按照对象的类型或者配合稀疏检出按照目录下载对象,在用到缺失的对象时自动按需下载。
如果在使用过程中有任何疑问,欢迎加入钉群(32027065)给我们反馈。更多视频讲解材料点击查看:Git仓库膨胀的两种常见原因和解决方案。