Git LFS介绍

Git的设计初衷是管理Linux内核的开发,即对源代码(文本文件)进行版本控制。Git是基于文件快照而不是增量差异进行文件存储的,如果一个文件有3个版本,即是只有微小的差异,在Git仓库中也对应着3个blob文件。基于快照的设计使得在Git中创建分支非常快捷方便。文本文件的压缩率是非常高的,二进制文件(例如图片、视频、so文件等)的压缩率则几乎很难再被压缩。这意味这如果我们用Git来管理大的二进制文件,这肯能会导致仓库膨胀得非常快。注意,即使最后这些二进制文件被删除了也并不会减少仓库大小,因为它们的历史版本已经存储到了仓库中。Git仓库的的大小超过1GB时可能会面临性能问题,git clone可能都会因为pack超时而失败。

要彻底解决这个问题,普遍的做法是使用Git LFS (Large File Storage),即Git大文件存储。它的原理是将二进制文件存储到其它地方,例如本地文件系统、NFS、aws s3等,而在Git仓库中仅保存一个文本文件用户包含指向该二进制文件存储的信息。

在macOS上使用Git LFS的步骤:

  1. 安装: brew install git-lfs
  2. 在需要使用LFS的Git仓库中进行设置: git lfs install
  3. 设置需要使用LFS的文件类型,例如git lfs track "*.psd"
  4. .gitattributes 文件纳入版本控制: git add .gitattributes
  5. 其它操作就和常规的Git操作一致了: git add; git commit; git push;

如果需要 push 到远程仓库,则需要远程仓库支持LFS。

如果是代码托管平台,github.com, gitlab.com 都是支持的。

如果是自建Git服务器,gitlab ce , gitrea

注意 gogs 到目前为止还未支持LFS,虽然它很轻量级。