Git LFS(学习笔记)

Git大文件储存 LFS

LFS(Large File Storage)

 

查询资料了解到,GitHub在2015年中推出了Git大文件储存LFS,相继GitLab在2015年末也宣布支持了LFS。

 

开发者可以通过Git LFS支持大文件存储,它支持大的二进制文件,例如音频采样、数据集、图形和视频等。

因为对分布式版本管理系统来说,管理“大文件”往往不切实际。

GitHub给出他们的解决方案LFS是:借用文本指针来替换大文件。

 

LFS特性

  • 大文件存储:支持Git中几GB大小的文件;
  • 仓库空间足:Git仓库很足,可很好的管理外部文件;
  • 快速复制和提取:下载数据量较少,让复制和读取大文件更快;
  • 一样的Git工作流:针对二级存储系统或工具集并未产生额外的指令
  • 相同的接入控制和权限:针对Git仓库的大文件,远程主机和GitHub上拥有一样的接入控制和权限。

 

 

安装 LFS

LFS是作为一个开源扩展,尚未加入 Git 的核心二进制文件,因此需要在服务端、客户端提前进行安装。

服务端

目前并不是所有主机服务器都支持 LFS。 需要使用 GitLab.com 或 GitLab CE 或 EE 的中间版本,因为它们已经支持LFS,因此需要管理员权限进入,开启LFS选项。

客户端(用户机器)

本地安装的 Git 也需要支持 LFS。 

使用命令行来运行 Git,可以选择以下方法来安装 LFS:

  • 二进制安装包:最新版本的 binary packages, 支持 Windows,Mac,Linux 以及 FreeBSD 。

  • Linux:Debian 和 RPM 的软件包可从 PackageCloud 获得。

  • macOS:使用 Homebrew 执行“brew install git-lfs”来安装,也可以使用 MacPorts 执行“port install git-lfs”安装.

  • Windows:可以使用包管理器 Chocolatey 执行“choco install git-lfs”来安装。

使用 LFS 追踪文件

没有特别说明的情况下,LFS 不会处理大文件问题,因此,我们必须明确告诉 LFS 该处理哪些文件。

让我们回到“大 Photoshop 文件”的示例, 我们可以使用“lfs track”命令来告诉 LFS 处理“design.psd”文件:

git lfs track "design-resources/design.psd"

乍一看,这条命令好像没生效,不过,你会看到项目根目录下新建了一个新文件 ".gitattributes" (如果已存在,将会被修改),".gitattributes" 文件记录了我们用 LFS 追踪的所有的文件路径。

cat .gitattributes 
design-resources/design.psd filter=lfs diff=lfs merge=lfs -text

棒棒哒!在这之后 LFS 会处理这个文件。我们接下来只要像往常那样把这个文件提交到仓库。值得注意的是,".gitattributes" 文件也需要提交到仓库,操作和提交其他修改文件一样:

git add .gitattributes
git add design-resources/design.psd
git commit -m "Add design file"

 

追踪文件路径

添加单一文件如上所示就可以。但是,比如说,如果你想追踪项目里所有后缀名为 indd 的文件呢?放心,你不用手动的添加每个文件。LFS 允许你定义文件路径,就像忽略文件时的用法那样。举个例子,下面的命令会告诉 LFS 追踪所有的 InDesign 文件 — 已经存在的和以后添加的。

git lfs track "*.indd"

你也可以告诉 LFS 追踪整个文件夹里的所有内容:

git lfs track "design-assets/*"

 

追踪文件概述

有时候,你可能想知道到底有哪些文件在被 LFS 追踪。你可以简单的看看.gitattributes文件。然而,它们不是真实的文件,而是包含一些规则和理论的文件:某些文件可能会漏掉,例如由于拼写错误或者过分严格的规则。

想要查看你当前正在追踪的实际文件的列表,可以使用 git lfs ls-files 命令:

git lfs ls-files
194dcdb603 * design-resources/design.psd

 

尽早追踪

记住 LFS 并没有改变 git 本身的原理:被提交到仓库中的文件还会留在那儿。改变项目的提交历史很困难(也有风险)。

这意味着你应该在文件没有提交到仓库前就让 LFS 进行追踪。

不然,它就成了项目历史的一部分 - 令项目增大数 MB 或数 GB 的大小...

初始化仓库时要选择配置要追踪的文件规则的完美时机(就跟配置忽略文件一样)。

 

总结

LFS 有一个不错的Git开源扩展,它的优势在于针对几G甚至十几G大小的流媒体文件,可以像之前一样版本管理一样保持正常的 Git 工作流程:暂存,提交,push,pull 和其他所有的操作。 

转载于:https://my.oschina.net/u/3448620/blog/1489964

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值