使用 Git LFS 上傳大型檔案

2024/04/14 Git

前言

Git LFS(Large File Storage)是一種用於處理大型檔案的工具。傳統的 Git 主要設計用於處理文字檔案,因此在處理大型二進位檔案時效能較差。當其他開發者從遠端倉儲 Clone 專案時,預設情況下 Git 會下載所有歷史版本和檔案,這可能導致儲存空間浪費和效能下降。為了解決這個問題,GitHub 建議使用 Git LFS 來管理大型檔案。Git LFS 可以將大型檔案存儲在遠端服務器上,僅在需要時才下載。GitHub 建議將檔案大小超過50MB的檔案轉換為 Git LFS 跟蹤,以提高效能並節省儲存空間。

GitHub免費帳戶提供一個月上限1GB的LFS額度

安裝 Git LFS

根據不同作業系統可以參照官網的說明安裝 Git LFS。

  • Linux
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt-get install git-lfs
git lfs install
  • MacOS
brew install git-lfs
git lfs install
  • Windows

下載安裝 Git Large File Storage (LFS) 執行安裝檔,安裝完畢後,回到專案終端機,輸入以下指令讓你的 git 支援 lfs。

git lfs install

切記安裝完成後一定要輸入 git lfs install 並確保回傳以下訊息,即代表成功。

Updated Git hooks.
Git LFS initialized.

使用方式

首先進入專案資料夾先為你的轉案進行 Git 的初始化。

git init

接著假設在專案資料夾下有一個 model.onnx 容量很大的模型。我們想為他宣告為 LFS 檔案。

git lfs track model.onnx
git add .
git commit -m 'add onnx model'

在上述範例中,只有第一行是新認識的,其他都是一般的 Git 指令。只要將您想要追蹤的大型檔案加入追蹤列表中即可。此時在你的專案資料夾下會自動產生一個 .gitattributes 描述檔,它是用來告訴 Git 此專案要使用 LFS 的使用條件。如果你使用 VSCode 開啟 .gitattributes 將會看到裡面的描述。

model.onnx filter=lfs diff=lfs merge=lfs -text

其實 git lfs track 指令只需新增一行到 .gitattributes,這樣 Git 就知道該檔案必須使用 LFS 處理,也就是以二進位方式處理,亦即不作任何處理。上面的描述內容就是告訴 Git 在處理 filter、diff、merge 時將 model.onnx 透過 lfs 的方式處理。而 -text 就是告訴Git 不要將該文件當作文字檔處理。

另外想設定某個副檔名的所有文件都要加入 LFS 處理。可以使用 * 表示全部。

git lfs track *.onnx

要查看目前正在使用 Git LFS 追蹤的檔案,可以執行以下指令。

git lfs track

若想要取消追蹤某些檔案,可以執行以下指令。

git lfs untrack model.onnx

記住 LFS 管理大型檔案後,繼續執行 git add -> git commit -> git push 命令即可推送到雲端。

鼓勵持續創作,支持化讚為賞!透過下方的 Like 拍手👏,讓創作者獲得額外收入~
版主10在2020年首次開設YouTube頻道,嘗試拍攝程式教學。想要了解更多的朋友歡迎關注我的頻道,您的訂閱就是最大的支持~如果想學其他什麼內容也歡迎許願XD
https://www.youtube.com/channel/UCSNPCGvMYEV-yIXAVt3FA5A

Search

    Table of Contents