git仓库从30G压缩到600M-git文档仓库过大的优化方案

git仓库从30G压缩到600M-git文档仓库过大的优化方案

项目上使用git管理相关文档,因维护多年,导致其文档仓库已经逼近30G的大小,对于我这台256G的MBP来说,无疑是占用了巨大的空间,介于此,我计划减少这个仓库的体积。

git-lfs

git-lfsatlassian维护的开源项目,意图解决因反复修改大文件而导致git仓库变大,以及影响初次下载的体验;

在我尝试使用git-lfs后,占用空间被压缩到了24G左右,但效果并不明显,这主要是因为这个git仓库中的大部分文档都不存在反复修改的情况,大部分文件都是上传后再也没有改过。

可以说git-lfs解决了我一部分的问题,但并没有全部解决。

GVFS

GVFS是微软的开源项目,意图解决git对于超大型仓库的维护问题,但很可惜,GVFS依赖于window操作系统,我手上主力机还是macOS,所以GVFS就不考虑了。

git sparse checkout

sparse checkout是git自己维护的功能,其提供的功能是告诉git相关的命令再拉取时仅拉取部分文件,或排除掉部分文件。

很现实,sparse checkout就是解决我这个问题的最佳方案

使用方法

  1. 新建仓库并设置远端仓库地址
1
2
git init
git remote add -f origin <url>
  1. 开启配置
1
git config core.sparsecheckout true
  1. 配置想要拉取的文件路径
1
xxx/xxx/**

或者是不想要拉取的文件路径

1
!yyy/**

然后正常使用git pull拉取即可

  1. 注意使用较新版本的git;

  2. 使用方法也可以参考[官网链接](git config core.sparsecheckout true)

结论

最终我使用的是git-lfs搭配git parse checkout搭配使用,一方面降低大文件重复修改所产生的占用,一方面只需要拉取我自己需要的文件到本地即可。

这样操作以后,原30G的git仓库,我现在只需要600M就可以了~