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服务器,本地仓库并不是一个完整的仓库
在pull/push等这些操作中,LFS又通过LFS服务器把这些文件的真身给下载或上传回来
通过这样的手段,使得本地仓库的体积大大减小,而不会出现随着这些文件的版本增多而体积剧烈膨胀的情况
这种把存储负担转移给了服务器的做法,让其强依赖于LFS服务器,本地仓库并不是一个完整的仓库
使用目的
在游戏开发过程中,设计资源占用了很大一部分空间,像png、psd等文件是二进制(blob)的,体积也很庞大
但Git的diff/patch等是基于文件行的,对于二进制文件来说,Git需要存储每次commit的改动
每次当二进制文件修改,发生变化的时候,都会产生额外的提交量,导致clone和pull的数据量大增,在线仓库的体积也会迅速增长
没使用Git之前,一般二进制文件和源代码分成两块,分别存放到不同的SVN仓库上(防止二进制文件中有病毒感染服务器,所以进行隔离)
当切换到Git上进行版本管理,就可以使用git lfs来管理这些二进制文件,这样就可以让源码和二进制文件和谐共存于一处,从而不像以前那样,需要分别做两次更新
当切换到Git上进行版本管理,就可以使用git lfs来管理这些二进制文件,这样就可以让源码和二进制文件和谐共存于一处,从而不像以前那样,需要分别做两次更新
LFS(Large File Storage)就是为了解决这一问题而产生的工具,它将你所标记的大文件保存至另外的仓库,而在主仓库仅保留其轻量级指针
那么当检出版本时,根据指针的变化情况下更新对应的大文件,而不是在本地保存所有版本的大文件
安装
Windows下常用的Git for Windows和Source Tree都已经集成了LFS,无需另外安装,可以运行命令git lfs
查看
注意:安装Git LFS需要Git的版本不低于1.8.5
Linux
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt-get install git-lfs
git lfs install
Mac
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" // 安装HomeBrew
brew install git-lfs
git lfs install
Windows
- 下载安装windows installer
- 运行windows installer
- 在命令行执行
git lfs install
使用
- 执行 git lfs install 开启lfs功能
- 使用 git lfs track 命令进行大文件追踪 例如git lfs track "*.png" 追踪所有后缀为png的文件
- 使用 git lfs track 查看现有的文件追踪模式
- 提交代码需要将gitattributes文件提交至仓库. 它保存了文件的追踪记录
- 提交后运行git lfs ls-files 可以显示当前跟踪的文件列表
- 将代码 push 到远程仓库后,LFS 跟踪的文件会以‘Git LFS’的形式显示
- 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的使用的主要内容,如果未能解决你的问题,请参考以下文章
Git LFS 3.0.0 发布,对大文件进行版本控制的 Git 扩展