Git LFS (Large File Storage) 二進(jìn)制文檔版本控制

一直有對二進(jìn)制文檔版本控制的需求畔况,比如一些修圖的文檔,圖片庫什么的慧库。之前不懂跷跪,一直在用原生git進(jìn)行控制,結(jié)果原本的2G文件夾齐板,很快變成了4G+吵瞻。
然后參考了git文檔發(fā)現(xiàn),官方是不推薦git進(jìn)行二進(jìn)制文檔控制的甘磨。

然后順著思路找橡羞,發(fā)現(xiàn)二進(jìn)制版本控制是有的,而且是git系統(tǒng)能提供的:Git LFS济舆。

Git LFS需要單獨(dú)下載卿泽,看似是獨(dú)立于git的另一個程序,但其實(shí)只是相當(dāng)于一個git插件的存在滋觉。

主要好處有:

  • 邏輯變了签夭,運(yùn)行速度就加快了。

問題:

  • 使用了Git LFS后椎侠,只不過體積增大問題還是沒解決第租。2G的圖片倉庫還是會翻倍變成5G+,多出來的全都在.git/lfs/objects文件夾中(以前是存在.git/objects中)我纪。

參考Github官方:Git Large File Storage

安裝和初始配置

# Mac
$ brew install git-lfs

初始配置(只需要在第一次安裝時配置一次):

$ git lfs install

生成和配置本地項(xiàng)目

到這里慎宾,就要進(jìn)入lfs領(lǐng)域了。需要說明的是浅悉,
其實(shí)絕大多數(shù)時間里趟据,你都還是在使用原生的git命令。

我在一開始用時仇冯,腦袋非持蓿混亂:到底怎么看待git lfs?另一套程序苛坚?還是git的一個指令比被?
其實(shí)都不是,如果非要說的話泼舱,把它看出git的一個extension插件,看成一個Filter過濾器更為方便娇昙。

現(xiàn)在來說一個典型的Git LFS Workflow流程:

  • 打開一個本地文件夾
  • git init 初始化為git倉庫
  • git lfs track 指定監(jiān)控的LFS大文件類型
  • git add . && git commit 正常添加尺迂、提交倉庫變化
  • git lfs push 通過lfs優(yōu)化推送到遠(yuǎn)程
  • 修改一些文件
  • git add . & git commit -m "update" 正常git流程
  • 修改一些文件
  • git add . & git commit -m "update" 正常git流程
  • 修改一些文件
  • git add . & git commit -m "update" 正常git流程
  • git lfs pull 通過lfs優(yōu)化更新本地倉庫
  • git lfs push

實(shí)際上噪裕,Git LFS在這里的作用是一個Filter,把大文件過濾出來膳音,不對它使用文本的處理方式增大體積召衔,而采用另一套方案處理祭陷。
所以你只要一開始建立好filter,后面就不用再管了兵志。

# 指定監(jiān)視的文件類型
$ git lfs track "*.jpg"
$ git lfs track "*.png"
$ git lfs track "*.jpeg"

連接遠(yuǎn)程倉庫

使用的Gitlab來做LFS倉庫時,第一次push會出現(xiàn)以下消息:

Locking support detected on remote "origin". Consider enabling it with:
  $ git config lfs.https://gitlab.com/jason/test.git/info/lfs.locksverify true

然后照著它的提示想罕,輸入命令后再push,就沒有問題了弧呐。

常用的Git LFS遠(yuǎn)程連接有幾項(xiàng)常用方法:

$ git lfs clone <URL>

$ git lfs pull

$ git lfs push

# 斷點(diǎn)續(xù)傳(GB級別的倉庫常用)
$ git lfs fetch

這幾項(xiàng)至關(guān)重要嵌纲,如果沒有加lfs三個字的話俘枫,效率真的極低逮走。
lfs的遠(yuǎn)程邏輯完全不同:
比如下載文件的話,不像git原生一個一個下載师溅,lfs是先把所有文件夾茅信、文件名都創(chuàng)建好墓臭,然后再把真實(shí)所需的文件下載下來。

注意事項(xiàng)

一定要git lfs clone, git lfs pushgit lfs pull

如果不是使用git lsf指令clone窿锉、push酌摇、pull的話,git就會按照正常的步驟把所有文件和所有版本全部下載下來嗡载,對二進(jìn)制文檔來說效率極低窑多。
所以注意這里一定要指定lfs!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市洼滚,隨后出現(xiàn)的幾起案子埂息,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件千康,死亡現(xiàn)場離奇詭異享幽,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)拾弃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進(jìn)店門琉闪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人砸彬,你說我怎么就攤上這事颠毙。” “怎么了砂碉?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵蛀蜜,是天一觀的道長。 經(jīng)常有香客問我增蹭,道長滴某,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任滋迈,我火速辦了婚禮霎奢,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘饼灿。我一直安慰自己幕侠,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布碍彭。 她就那樣靜靜地躺著晤硕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪庇忌。 梳的紋絲不亂的頭發(fā)上舞箍,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天,我揣著相機(jī)與錄音皆疹,去河邊找鬼疏橄。 笑死,一個胖子當(dāng)著我的面吹牛略就,可吹牛的內(nèi)容都是我干的捎迫。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼残制,長吁一口氣:“原來是場噩夢啊……” “哼立砸!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起初茶,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤颗祝,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后搁宾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡盖腿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年翩腐,在試婚紗的時候發(fā)現(xiàn)自己被綠了茂卦。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片组哩。...
    茶點(diǎn)故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蛛砰,靈堂內(nèi)的尸體忽然破棺而出黍衙,到底是詐尸還是另有隱情,我是刑警寧澤涯捻,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布望迎,位于F島的核電站凌外,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏摄欲。R本人自食惡果不足惜疮薇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一按咒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦奔缠、人聲如沸吼野。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽单起。三九已至,卻和暖如春野蝇,著一層夾襖步出監(jiān)牢的瞬間括儒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工乍狐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留固逗,地道東北人。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓惜傲,卻偏偏與公主長得像贝攒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子哈踱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容