Git LFS的使用

Posted 5211314jackrose

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git LFS的使用相关的知识,希望对你有一定的参考价值。

Git LFS

简介

帮助文档:https://coding.net/help/doc/git/git-lfs.html

Git LFS是Github开发的一个Git的扩展,用于实现Git对大文件的支持

LFS是Git的一个扩展,所以没有改变Git的工作方式,其是把指定需要LFS管理的文件替换成了一个指针文件交给Git进行版本管理
在pull/push等这些操作中,LFS又通过LFS服务器把这些文件的真身给下载或上传回来
通过这样的手段,使得本地仓库的体积大大减小,而不会出现随着这些文件的版本增多而体积剧烈膨胀的情况
这种把存储负担转移给了服务器的做法,让其强依赖于LFS服务器,本地仓库并不是一个完整的仓库

技术图片

使用目的

在游戏开发过程中,设计资源占用了很大一部分空间,像png、psd等文件是二进制(blob)的,体积也很庞大
但Git的diff/patch等是基于文件行的,对于二进制文件来说,Git需要存储每次commit的改动
每次当二进制文件修改,发生变化的时候,都会产生额外的提交量,导致clone和pull的数据量大增,在线仓库的体积也会迅速增长

没使用Git之前,一般二进制文件和源代码分成两块,分别存放到不同的SVN仓库上(防止二进制文件中有病毒感染服务器,所以进行隔离)
当切换到Git上进行版本管理,就可以使用git lfs来管理这些二进制文件,这样就可以让源码和二进制文件和谐共存于一处,从而不像以前那样,需要分别做两次更新
技术图片

LFS(Large File Storage)就是为了解决这一问题而产生的工具,它将你所标记的大文件保存至另外的仓库,而在主仓库仅保留其轻量级指针
那么当检出版本时,根据指针的变化情况下更新对应的大文件,而不是在本地保存所有版本的大文件

技术图片

安装

Windows下常用的Git for Windows和Source Tree都已经集成了LFS,无需另外安装,可以运行命令git lfs查看

注意:安装Git LFS需要Git的版本不低于1.8.5

Linux

  1. curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
  2. sudo apt-get install git-lfs
  3. git lfs install

Mac

  1. /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" // 安装HomeBrew 
  2. brew install git-lfs
  3. git lfs install

Windows

  1. 下载安装windows installer
  2. 运行windows installer
  3. 在命令行执行 git lfs install

使用

  1. 执行 git lfs install 开启lfs功能
  2. 使用 git lfs track 命令进行大文件追踪 例如git lfs track "*.png" 追踪所有后缀为png的文件
  3. 使用 git lfs track 查看现有的文件追踪模式
  4. 提交代码需要将gitattributes文件提交至仓库. 它保存了文件的追踪记录
  5. 提交后运行git lfs ls-files 可以显示当前跟踪的文件列表
  6. 将代码 push 到远程仓库后,LFS 跟踪的文件会以‘Git LFS’的形式显示
  7. clone 时 使用git clone 或 git lfs clone均可

 

首次使用

  • git lfs install:开启LFS功能 // 第一次使用前需要运行下git lfs install(只要运行一次,以后都不需要了)

日常使用

  • git lfs track ‘*.?’:进行大文件追踪 // 需要用LFS管理的文件要添加到追踪列表里,一般而言,可以把某个类型的文件统一用LFS管理,例如把dll文件用LFS管理git lfs track ‘*.dll‘、追踪所有后缀为png的文件并把png文件用LFS管理git lfs track "*.png" - 此时,仓库的根目录下会自动创建.gitattribute文件,里面就记录了使用lfs的文件
  • git lfs track:查看现有的文件追踪模式 // 后续添加新的类型可以用git lfs track命令,也可以直接编辑.gitattribute文件 - 注意:.gitattribute文件需要添加到git仓库中进行版本管理
  • 文件追踪后,后续所有操作与Git普通操作一致

辅助命令

  • git lfs ls-files:查看当前有哪些文件是使用LFS管理的

 

以上是关于Git LFS的使用的主要内容,如果未能解决你的问题,请参考以下文章

sh 转换git repo以使用git lfs

Git LFS 3.0.0 发布,对大文件进行版本控制的 Git 扩展

使用Git LFS和TFS 2015 Update 2 On Premise

复制 git 存储库及其 GIT-LFS 设置

Git命令执行漏洞

Git LFS 文件未推送到远程仓库