善用 Git LFS 功能減少儲存庫容量
Git 教學現在有獨立的網站了!請移駕 Git 零到一百。
Git 是快照系統,會Git 是快照Git 是快照系統,會藉由差異比較來壓縮空間,這個機制遇到二進制檔案就沒有優勢了,因為很少會有兩個二進制檔案能用簡單的差異 來表達,導致檔案有十個版本就要儲存十份,當儲存庫容量過大開發者就要開始使用各種奇怪的 sparse-checkout 指令,所以我們平常在提交二進制檔案時都要小心,壓縮後才上傳也是基本的,最好是根本就不要上傳二進制檔案。
那可不可以把二進制檔案分開儲存呢?Git LFS (large file system) 功能就是把儲存庫的檔案改為指標,真正的檔案儲存在另一個伺服器上大幅減小儲存庫容量,伺服器則是看你用的是哪個雲端服務商,Github 就是用 Github 自己的 LFS 系統,以下簡單介紹幾個特點
- 檔案存儲在專用伺服器上,減少原始 Git 儲存庫的大小
- Git 儲存庫依然會儲存指向這些檔案的指標,指標保存檔案元數據例如哈希值等
- Github/Gitlab 都支援 LFS
- 免費版容量和每月流量都是 1GB
安裝
- Mac
- Windows
- Linux
使用
git lfs track "*.psd"
git add file.psd
git commit -m 'add file.psd'
用法非常簡單和一般的 Git 完全相同,網路上也有很多用法教學,不再贅述。git lfs ls-files
可以列出檔案,git lfs untrack
可以取消 LFS 追蹤,clone 直接 clone 即可加上 lfs 沒有顯著差異,其餘比較少用的方式就請直接看文檔,因為我也沒用過。
你適合 Git LFS 嗎?
檔案也需要被版本控制系統才適合 Git LFS,如果 LFS 儲存的檔案是網站的圖片那麼 Cloudflare R2 更適合,因為架站的圖片通常沒有必要使用版本控制,大部分情況都是內容過時需要直接更新,不需要保留過時版本。除此之外 Cloudflare 快又便宜:
- 10 GB 容量,每月操作次數寫一百萬,讀一千萬次免費
- 20 GB 容量,每月操作次數寫一百萬,讀一千萬次0.15 美金
- 50 GB 容量,每月操作次數寫一百萬,讀一千萬次0.60 美金
- 1000 GB 容量,每月操作次數寫一百萬,讀一千萬次15 美金
請到 R2 Pricing Calculator 測試
需求是要有一個域名(很便宜一年不用三百塊),有架站的人自己也都有了,唯一缺點在於完全分開控制,需要手動設定上傳圖片,再設定圖片 URL,完整流程會像是 CloudFlare R2 图床搭建教程 裡面說的一樣。
同場加映:圖片壓縮
Mac 預設擷圖是 PNG 很浪費空間,我會使用 imagemagick 把他轉成 webp 節省容量,容量至少減少 3~4 倍,轉成 AVIF 還可以更小不過有相容性問題,所以大部分還是轉成 webp,指令如下
magick input.png -sampling-factor 4:2:0 -strip -quality 80 output.webp
然而每次都要輸入指令很麻煩,如果是 Mac 用戶可以使用超級方便的 Automator,請見我的 Automator 文章。