本地Git操作因Git LFS异常缓慢,如何优化解决?
本地Git操作因Git LFS变得异常缓慢,git checkout分支、git commit这类基础操作耗时极长。执行time git checkout SAP-1205(gco为git checkout的别名)的输出如下:
Updating files: 100% (8288/8288), done.
Switched to branch 'SAP-1205'
git checkout SAP-1205 4.67s user 13.59s system 54% cpu 33.246 total
以下是针对性的解决方法:
禁用LFS自动下载本地文件
执行git lfs install --skip-repo,让Git LFS在checkout时只处理指针文件,不再自动拉取实际大文件,能大幅缩短分支切换时间。后续如果需要特定LFS文件,再手动执行git lfs pull --include="目标文件/路径"单独拉取。清理本地LFS缓存
运行git lfs prune清理本地已缓存但不再需要的LFS对象,减少磁盘占用和操作时的扫描开销;配合git lfs clean清理工作区的临时LFS文件。调整LFS并行下载数
通过git config --global lfs.concurrenttransfers 8修改全局配置,增加LFS并行下载线程数(可根据机器性能调整为4-16之间的数值),提升批量拉取时的效率。启用LFS稀疏检出
如果不需要仓库中所有LFS文件,可配置稀疏检出规则来减少文件处理量:- 启用稀疏检出:
git config core.sparseCheckout true - 编辑
.git/info/sparse-checkout文件,添加需要保留的路径规则,示例:!*.psd !*.zip src/ - 执行
git read-tree -mu HEAD应用规则,之后checkout只会同步指定路径的文件。
- 启用稀疏检出:
更新Git和Git LFS版本
旧版本的Git或Git LFS存在性能瓶颈,建议升级到Git 2.30+、Git LFS 3.0+的最新稳定版,直接从官方渠道下载安装即可。
内容的提问来源于stack exchange,提问作者Gaurav Jain

