锦集04-git版本管理之大文件管理

简介

  1. 众所周知,github单个仓库不限制,单个文件限制100M
  2. 码云,对于普通用户码云单个仓库限制为1G,单个文件限制100M
  3. 但是当我们使用的第三方中的静态库.a大于100M,该怎么办呢?(环信的语音、百度地图的导航SDK等等)
  4. 解决办法:
    1. 方法一: 如果是用cocoapods导入的,可以配置gitignore忽略上传(具体方法看锦集1),别人克隆项目后可以通过pod install自动下载
    2. 方法二: 如果是手动拖入的呢,如果设置忽略掉了,而别人是下载不到的,该怎么办呢?
      1. 使用github + Git LFS
      2. 使用码云 + oschina

GitHub + Git LFS

什么是 Git LFS

  1. Git LFS(Large File Storage, 大文件存储)是可以把音乐、图片、视频等指定的任意文件存在 Git 仓库之外,而在 Git 仓库中用一个占用空间 1KB 不到的文本指针来代替的小工具。通过把大文件存储在 Git 仓库之外,可以减小 Git 仓库本身的体积,使克隆 Git 仓库的速度加快,也使得 Git 不会因为仓库中充满大文件而损失性能。
  2. Git LFS 是 Github 开发的一个 Git 的扩展,用于实现 Git 对大文件的支持,2015年4月有关GitHub发布
  3. LFS其实是git的一个扩展,并没有改变git的工作方式,有点像耍了个小花招,把指定需要lfs管理的文件替换成了一个指针文件交给git进行版本管理,即: 它将你所标记的大文件保存至另外的仓库,而在主仓库仅保留其轻量级指针.
  4. 在pull/push等这些操作中,lfs又通过lfs服务器把这些文件的真身给下载或上传回来;
  5. 比如:在你检出(克隆)版本时,根据指针的变化情况下更新对应的大文件.而不是在本地保存所有版本的大文件
  6. 通过这样的手段,使得本地仓库的体积大大减小,而不会出现随着这些文件的版本增多而体积剧烈膨胀的情况;

Git LFS的安装:(这里只针对MAC)

  1. 安装HomeBrew(因为你首先需要Brew环境)

     /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    
    1. 该步骤非常长,只管确定即可
  2. 安装Git LFS

     brew install git-lfs
    
  3. 开启lfs功能

     git lfs install
    
  4. 注意:安装 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 ...
  1. git lfs clone特别说明
    1. 通过合并获取 LFS 对象的请求,减少了 LFS API 的调用,并行化 LFS 对象的下载,从而达到显著的速度提升
    2. 命令同样也兼容没有使用 LFS 的仓库。即无论要克隆的仓库是否使用 LFS,都可以使用 git lfs clone 命令来进行克隆。
    3. 目前最新版本的 git clone 已经能够提供与 git lfs clone 一致的性能,因此自 Git LFS 2.3.0 版本起,git lfs clone不再推荐使用

使用

  1. 初始化LFS仓库:
    1. cd 到项目目录,git lfs install
  2. 配置需要使用 Git LFS 管理的文件:
    1. 使用 git lfs track 命令进行大文件追踪(就是制定那些文件需要放到LFS),例如git lfs track "*.png” 追踪所有后缀为png的文件
  3. 提交LFS的配置:
    1. 此时会看到你的项目目录中多了一个. gitattributes 文件,提交代码需要将gitattributes文件提交至仓库. 它保存了文件的追踪记录
  4. git lfs track 可以查看该项都是那些文件被追踪
  5. 提交后运行git lfs ls-files 可以显示当前跟踪的文件列表
  6. 将代码 push 到远程仓库后,LFS 跟踪的文件会以『Git LFS』的形式显示:
  7. clone 时 使用git clonegit lfs clone均可

支持 Git LFS的平台

  1. GitHub
    1. 必须支持本来就是针对他的一个扩展
  2. GitLab
    1. 2015年11月宣布GitLab支持 Git 大文件存储 (Git LFS)
  3. Coding
    1. 2016年支持 Git LFS 大文件存储

支持 Git LFS图形管理工具

  1. sourcetree(注意: 版本要大于2.2)
    1. 选择一个项目打开
    2. 选择sourcetree工具栏上面的-》仓库-》Git FLS -》初始化仓库,相当于执行了(git lfs install)
    3. 跟踪、取消跟踪…,点击后可以配置那些类型的文件需要LFS存储,比如: *.a
Table of Contents