本章主要測試講解
- git lfs 一些基本命令使用;
- 使用 Git/Git LFS 搭配 gitlab 管控大文件之測試。
測試過程內容較多,每個步驟都逐一截圖以便真實說明,也有列示用法。若不感興趣,可直接查看總結部分。
測試過程
前置說明
- 1、Git 本身作為代碼管控軟件,是以代碼為主,沒有直接管控到比較大的文件。
- 2、目前比較流行的 git 管理大文件的方式是使用 git-lfs。
- 3、git-lfs 是 git 的一個插件,官網說明如下:
- 4、使用比較簡單,簡單兩三步即可完成大文件的提交。
- 5、gitlab 新版本默認已經支持 lfs,在配置文件 gitlab.rb 中可見:
預期中可能出現的問題
- 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 作為代碼管理對象。
如下圖:
創建遠程倉庫
在 gitlab server 創建一個倉庫,作為遠程倉庫
初始化文件夾為本地 git 倉庫,初始化 git lfs。
執行命令:
git init
git lfs install
如下圖:
使用 git lfs 追蹤大文件
使用 git lfs 追蹤(track)大文件(*指代所有),執行之后,在文件根目錄會出現.gitattributes 文件,內容即為追蹤的大文件類型。
執行命令:
git lfs track "*.zip"
如下圖
確保.gitattributes 文件會被添加到追蹤(tracked)
執行命令:
git add .gitattributes
一般來說如果都是執行的git add .
,那就沒有必要再這樣作
如下圖:
到這里,git lfs 追蹤管理大文件就基本完成了,后續就像是管理一般代碼一樣,進行 add,commit,push 等操作。
將 gitLfsTest 專案 push 到遠程倉庫。
當然,要記得先 add,commit。
注意:首次 add 時,我使用的是add .
,會添加 2 個 zip 文件合計 2.26G 左右,2 個 txt 文件,總共 4 個文件,使用 time 指令記錄耗時:
time git add .
如下圖:
再 commit:
time git commit -m '初次提交兩個大文件'
如下圖:
后續常規,添加遠程倉庫地址,推送到遠程倉庫:
git remote add origin http://192.168.28.83/david/gitlfstest.git
time git push -u origin master
如下圖:
遠程倉庫內容如下:
可見兩個 zip 包后面有 LFS 標識。
修改本地的 zip 包,再上傳到遠程倉庫。
修改文件前,留意下.git 文件的大小,如下圖:
修改 test2.zip 文件大小
修改前如下圖:
修改后如下圖:
同樣的,add,commit,push:
time git add .
time git commit -m '修改test2.zip文件大小'
time git push -u origin master
如下圖:
遠程也是一樣有新的 commit 信息
如下圖:
此時,再關注下.git 文件夾的大小
如下圖:
由 2.26G 上升到了 2.99G。
所以,看起來隨著修改的次數變多,.git 文件會無休止的增大下去。
不過 git lfs 有相關指令避免它:
git lfs prune
它會刪除本地舊的 fls 文件。
如下圖:
從遠程倉庫 clone 一份 gitLfsTest 項目,查看文件內容。
此時的項目應該是這樣的:如下圖:
我們從遠程克隆一份下來:
查看內容,注意.git 的大小。如下圖:
可見項目內容是完整的,test1.zip 和 test2.zip 都完整存在。至此使用 git 搭配插件 git lfs 管理大文件的測試就完成。
如下圖:
總結
- 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
- 即便是針對大文件,add,commit 等在本機的 git 指令依舊不算耗時;
- 在將項目需要放到遠程 server 管理時,主要的耗時,來源于 push 和 clone 等跨主機操作,因此可以考慮到主要耗時取決網絡。
- .git 中的確會保留 fls 文件操作歷史,導致 size 變得很大,不過可以使用
git lfs prune
盡量減少大小。 - 更多
git lfs
指令,可參看official man pages.,或者直接終端輸入:
git lfs help <command>
# 或
git lfs <command> -h