git仓库从30G压缩到600M-git文档仓库过大的优化方案
git仓库从30G压缩到600M-git文档仓库过大的优化方案
项目上使用git管理相关文档,因维护多年,导致其文档仓库已经逼近30G的大小,对于我这台256G的MBP来说,无疑是占用了巨大的空间,介于此,我计划减少这个仓库的体积。
git-lfs
git-lfs是atlassian维护的开源项目,意图解决因反复修改大文件而导致git仓库变大,以及影响初次下载的体验;
在我尝试使用git-lfs后,占用空间被压缩到了24G左右,但效果并不明显,这主要是因为这个git仓库中的大部分文档都不存在反复修改的情况,大部分文件都是上传后再也没有改过。
可以说git-lfs解决了我一部分的问题,但并没有全部解决。
GVFS
GVFS是微软的开源项目,意图解决git对于超大型仓库的维护问题,但很可惜,GVFS依赖于window操作系统,我手上主力机还是macOS,所以GVFS就不考虑了。
git sparse checkout
sparse checkout是git自己维护的功能,其提供的功能是告诉git相关的命令再拉取时仅拉取部分文件,或排除掉部分文件。
很现实,sparse checkout就是解决我这个问题的最佳方案
使用方法
- 新建仓库并设置远端仓库地址
1 | git init |
- 开启配置
1 | git config core.sparsecheckout true |
- 配置想要拉取的文件路径
1 | xxx/xxx/** |
或者是不想要拉取的文件路径
1 | !yyy/** |
然后正常使用git pull
拉取即可
注意使用较新版本的git;
使用方法也可以参考[官网链接](git config core.sparsecheckout true)
结论
最终我使用的是git-lfs
搭配git parse checkout
搭配使用,一方面降低大文件重复修改所产生的占用,一方面只需要拉取我自己需要的文件到本地即可。
这样操作以后,原30G的git仓库,我现在只需要600M就可以了~