锦集04-git版本管理之大文件管理
简介
- 众所周知,github单个仓库不限制,单个文件限制100M
- 码云,对于普通用户码云单个仓库限制为1G,单个文件限制100M
- 但是当我们使用的第三方中的静态库.a大于100M,该怎么办呢?(环信的语音、百度地图的导航SDK等等)
- 解决办法:
- 方法一: 如果是用cocoapods导入的,可以配置gitignore忽略上传(具体方法看锦集1),别人克隆项目后可以通过pod install自动下载
- 方法二: 如果是手动拖入的呢,如果设置忽略掉了,而别人是下载不到的,该怎么办呢?
- 使用github + Git LFS
- 使用码云 + oschina
GitHub + Git LFS
什么是 Git LFS
- Git LFS(Large File Storage, 大文件存储)是可以把音乐、图片、视频等指定的任意文件存在 Git 仓库之外,而在 Git 仓库中用一个占用空间 1KB 不到的文本指针来代替的小工具。通过把大文件存储在 Git 仓库之外,可以减小 Git 仓库本身的体积,使克隆 Git 仓库的速度加快,也使得 Git 不会因为仓库中充满大文件而损失性能。
- Git LFS 是 Github 开发的一个 Git 的扩展,用于实现 Git 对大文件的支持,2015年4月有关GitHub发布
- LFS其实是git的一个扩展,并没有改变git的工作方式,有点像耍了个小花招,把指定需要lfs管理的文件替换成了一个指针文件交给git进行版本管理,即: 它将你所标记的大文件保存至另外的仓库,而在主仓库仅保留其轻量级指针.
- 在pull/push等这些操作中,lfs又通过lfs服务器把这些文件的真身给下载或上传回来;
- 比如:在你检出(克隆)版本时,根据指针的变化情况下更新对应的大文件.而不是在本地保存所有版本的大文件
- 通过这样的手段,使得本地仓库的体积大大减小,而不会出现随着这些文件的版本增多而体积剧烈膨胀的情况;
Git LFS的安装:(这里只针对MAC)
-
安装HomeBrew(因为你首先需要Brew环境)
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- 该步骤非常长,只管确定即可
-
安装Git LFS
brew install git-lfs
-
开启lfs功能
git lfs install
-
注意:安装 Git LFS 需要 Git 的版本不低于 1.8.5
常用 Git LFS 命令
# 查看当前使用 Git LFS 管理的匹配列表
git lfs track
# 使用 Git LFS 管理指定的文件
git lfs track "*.psd"
# 不再使用 Git LFS 管理指定的文件
git lfs untrack "*.psd"
# 类似 `git status`,查看当前 Git LFS 对象的状态
git lfs status
# 枚举目前所有被 Git LFS 管理的具体文件
git lfs ls-files
# 检查当前所用 Git LFS 的版本
git lfs version
# 克隆代码库: 针对使用了 LFS 的仓库进行了特别优化的 clone 命令,显著提升获取LFS 对象的速度,接受和 `git clone` 一样的参数。
git lfs clone ...
git lfs clone
特别说明- 通过合并获取 LFS 对象的请求,减少了 LFS API 的调用,并行化 LFS 对象的下载,从而达到显著的速度提升
- 命令同样也兼容没有使用 LFS 的仓库。即无论要克隆的仓库是否使用 LFS,都可以使用
git lfs clone
命令来进行克隆。 - 目前最新版本的
git clone
已经能够提供与git lfs clone
一致的性能,因此自 Git LFS 2.3.0 版本起,git lfs clone
已不再推荐使用。
使用
- 初始化LFS仓库:
- cd 到项目目录,
git lfs install
- cd 到项目目录,
- 配置需要使用 Git LFS 管理的文件:
- 使用
git lfs track
命令进行大文件追踪(就是制定那些文件需要放到LFS),例如git lfs track "*.png”
追踪所有后缀为png的文件
- 使用
- 提交LFS的配置:
- 此时会看到你的项目目录中多了一个
. gitattributes
文件,提交代码需要将gitattributes文件提交至仓库. 它保存了文件的追踪记录
- 此时会看到你的项目目录中多了一个
git lfs track
可以查看该项都是那些文件被追踪- 提交后运行
git lfs ls-files
可以显示当前跟踪的文件列表 - 将代码
push
到远程仓库后,LFS 跟踪的文件会以『Git LFS』的形式显示: - clone 时 使用
git clone
或git lfs clone
均可
支持 Git LFS的平台
- GitHub
- 必须支持本来就是针对他的一个扩展
- GitLab
- 2015年11月宣布GitLab支持 Git 大文件存储 (Git LFS)
- Coding
- 2016年支持 Git LFS 大文件存储
支持 Git LFS图形管理工具
- sourcetree(注意: 版本要大于2.2)
- 选择一个项目打开
- 选择sourcetree工具栏上面的-》仓库-》Git FLS -》初始化仓库,相当于执行了(git lfs install)
- 跟踪、取消跟踪…,点击后可以配置那些类型的文件需要LFS存储,比如:
*.a