《Git/Gitlab进阶》十七:使用Git、Git LFS搭配gitlab管控大文件

本章主要测试讲解

  • git lfs 一些基本命令使用;
  • 使用 Git/Git LFS 搭配 gitlab 管控大文件之测试。

测试过程内容较多,每个步骤都逐一截图以便真实说明,也有列示用法。若不感兴趣,可直接查看总结部分。

测试过程

前置说明

  • 1、Git 本身作为代码管控软件,是以代码为主,没有直接管控到比较大的文件。
  • 2、目前比较流行的 git 管理大文件的方式是使用 git-lfs。
  • 3、git-lfs 是 git 的一个插件,官网说明如下:
1.png
  • 4、使用比较简单,简单两三步即可完成大文件的提交。
  • 5、gitlab 新版本默认已经支持 lfs,在配置文件 gitlab.rb 中可见:
2.png

预期中可能出现的问题

  • 1、因为是管理到大文件,所以在 push 到远程服务器或者从远程服务器 pull 可能会因为网络带宽、文件大小、同时操作人员过多等因素导致操作耗时较长。
  • 2、git 记录每次 add、commit 等操作,又以大文件为主,本地的.git 文件夹可能会极速增大。
  • 3、gitlab 服务器若是还添加定期备份,因为文件管理可能导致 gitlab server 需要较大的硬盘存储数据。

大概流程

  • 1 安装 git lfs 插件
  • 2 准备两份大文件,两份 txt,分别作为文件管理和代码管理。
  • 3 在 gitlab server 新建仓库,作为文件管理远程仓库。
  • 4 使用 git lfs 将文件上传到 gitlab server 远程仓库。
  • 5 克隆远程仓库到本地,查看文件是否完整。

测试步骤

下载安装插件

git lfs 官网下载插件并安装。

本地项目准备

本地新建文件夹 gitLfsTest,并准备两个较大压缩包文件作文件管理对象。同时新建两份 test3.txt,test4.txt 作为代码管理对象。

如下图:

3.png

创建远程仓库

在 gitlab server 创建一个仓库,作为远程仓库

4.png

初始化文件夹为本地 git 仓库,初始化 git lfs。

执行命令:

git init
git lfs install

如下图:


5.png

使用 git lfs 追踪大文件

使用 git lfs 追踪(track)大文件(*指代所有),执行之后,在文件根目录会出现.gitattributes 文件,内容即为追踪的大文件类型。
执行命令:

git lfs track "*.zip"

如下图

6.png

确保.gitattributes 文件会被添加到追踪(tracked)

执行命令:

git add .gitattributes

一般来说如果都是执行的git add .,那就没有必要再这样作

如下图:

7.png

到这里,git lfs 追踪管理大文件就基本完成了,后续就像是管理一般代码一样,进行 add,commit,push 等操作。

将 gitLfsTest 专案 push 到远程仓库。

当然,要记得先 add,commit。
注意:首次 add 时,我使用的是add .,会添加 2 个 zip 文件合计 2.26G 左右,2 个 txt 文件,总共 4 个文件,使用 time 指令记录耗时:

time git add .

如下图:

8.png

再 commit:

time git commit -m '初次提交两个大文件'

如下图:

9.png

后续常规,添加远程仓库地址,推送到远程仓库:

git remote add origin http://192.168.28.83/david/gitlfstest.git
time git push -u origin master

如下图:

10.png

远程仓库内容如下:

11.png

可见两个 zip 包后面有 LFS 标识。

修改本地的 zip 包,再上传到远程仓库。

修改文件前,留意下.git 文件的大小,如下图:

12.png

修改 test2.zip 文件大小
修改前如下图:

13.png

修改后如下图:

14.png

同样的,add,commit,push:

time git add .
time git commit -m '修改test2.zip文件大小'
time git push -u origin master

如下图:

15.png

远程也是一样有新的 commit 信息

如下图:


16.png

此时,再关注下.git 文件夹的大小

如下图:

17.png

由 2.26G 上升到了 2.99G。
所以,看起来随着修改的次数变多,.git 文件会无休止的增大下去。
不过 git lfs 有相关指令避免它:

git lfs prune

它会删除本地旧的 fls 文件。

如下图:

18.png

从远程仓库 clone 一份 gitLfsTest 项目,查看文件内容。

此时的项目应该是这样的:如下图:

19.png

我们从远程克隆一份下来:

查看内容,注意.git 的大小。如下图:

20.png

可见项目内容是完整的,test1.zip 和 test2.zip 都完整存在。至此使用 git 搭配插件 git lfs 管理大文件的测试就完成。

如下图:

21.png

总结

  1. git 配合 git lfs 和 gitlab server 管控大文件操作还算简单方便,在系统安装完插件之后,在 git 管理的项目内:
    # 添加对大文件的追踪(.zip后缀)
    git lfs install
    git lfs track "*.zip"
    git add .gitattributes
    # 常规的添加、提交、推送
    git add .
    git commit -m '{message}'
    git remote add origin {origin-url}
    git push -u origin master
    # 删除本地旧的fls文件
    git lfs prune
  1. 即便是针对大文件,add,commit 等在本机的 git 指令依旧不算耗时;
  2. 在将项目需要放到远程 server 管理时,主要的耗时,来源于 push 和 clone 等跨主机操作,因此可以考虑到主要耗时取决网络。
  3. .git 中的确会保留 fls 文件操作历史,导致 size 变得很大,不过可以使用
    git lfs prune尽量减少大小。
  4. 更多git lfs指令,可參看official man pages.,或者直接終端輸入:
    git lfs help <command>
    # 或
    git lfs <command> -h
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339

推荐阅读更多精彩内容