搜尋結果

×

Git LFS介紹,為何需要它?

了解 Git LFS 的基本概念及其重要性,為什麼在處理大型文件時需要使用 Git LFS 來改善性能和管理效率。

Git LFS(Large File Storage)是 Git 的一個擴充套件,用於管理大型文件。

因為傳統的Git它對文件的版本控制和合併非常高效。然而,對於大型文件或二進制檔案(如圖片、音訊、影片、大型數據集等),Git 的性能和效率會明顯下降

此文章也有發表在Medium上 >>

Git LFS 的主要功能和特點

當你將一個大型文件添加到 Git 倉庫中並使用 Git LFS 進行管理時,會發生以下幾個步驟:

  1. 提交指標文件
    你提交到 Git 倉庫中的實際是這個小的指標文件,而不是原本的大型文件。

  2. 替換大型文件
    Git LFS 會將大型文件替換為一個指向它們的文本指標(pointer),這個指標文件會被存儲在 Git 中,而實際的文件內容則被存儲在一個獨立的服務中。

  3. 儲存大型文件
    原本的大型文件內容會被上傳並存儲到 Git LFS 的儲存系統中。這個存儲系統可以是專門的 Git LFS 服務,也可以是你設定的其他儲存後端。

  4. 減少倉庫大小
    由於大型文件不直接儲存在 Git 倉庫中,這樣可以大大減少倉庫的大小,提高操作速度和效率。

  5. 檢索大型文件
    當你或其他協作者 Clone 或 Pull 這個 Git 倉庫時,Git LFS 會自動下載這些指標文件並將其替換為實際的大型文件內容,從 Git LFS 的儲存系統中檢索回來。

  6. 簡化文件管理
    開發者仍然可以像平常一樣使用 Git 命令來管理這些大型文件,因為 Git LFS 會在背後處理文件的儲存和檢索。

所以GIT倉庫中的大型文件 其實很小 可能只有幾KB 真實的文件存在LFS存儲系統中

這樣做有幾個好處:

  1. 減小倉庫大小
    因為 Git 倉庫中只存儲了小的指標文件,所以倉庫的大小會大大減小。

  2. 提高性能
    Git 操作的性能會提高,因為 Git 不需要處理大型文件。

  3. 便捷管理
    方便地跟蹤和管理大型文件。

EX: 如果你有一個 100 MB 的大型文件 largefile.bin,使用 Git LFS 後,Git 倉庫中保存的可能只是幾 KB 的指標文件,而 100 MB 的真實文件內容則存儲在 Git LFS 的存儲系統中。

Git LFS 如何處理文件儲存的流程

  1. 提交文件
    當你添加並提交這些被追蹤的文件時,Git LFS 會將這些文件替換為指標文件,指標文件中包含了一個指向實際文件位置的指針。

  2. 上傳文件
    在執行 git push 時,Git LFS 會自動將這些大型文件上傳到 LFS 儲存服務器。這個服務器可以是 Git 提供的 LFS 儲存服務,也可以是其他第三方 LFS 儲存服務,例如 AWS S3、GitHub LFS、GitLab LFS 等。

  3. 下載文件
    當其他用戶 Clone 或 Pull 這個儲存庫時,Git LFS 會自動從 LFS 儲存服務器下載實際的文件,而不是指標文件。

Git LFS 是否需要支付費用?

對於是否需要支付費用,這取決於你選擇的服務提供商和使用量。我們以 GitHub 的 LFS 來看。

GitHub 為公有倉庫提供了一定的免費 LFS 配額:

  • 每個 GitHub 帳戶(包括免費和付費帳戶)都有 1 GB 的免費 LFS 存儲空間和每月 1 GB 的免費 LFS 傳輸量。

如果你需要更多的存儲空間或傳輸量,可以購買額外的配額:

  • 額外的存儲空間和傳輸量,每個數據包每月費用為 5 美元,並提供每月 50 GiB 的帶寬和 50 GiB 的存儲配額。你可以根據需要購買任意數量的數據包。例如,如果你需要 150 GB 的存儲空間,則需要購買三個數據包。

費用的更詳細說明請參見官方文件

結論

Git LFS (Large File Storage) 專門用來管理 Git 儲存庫中的大型文件。通過使用 Git LFS,你可以有效地解決傳統 Git 在處理大型文件時面臨的性能和儲存問題。它通過將大型文件替換為指標文件,並將實際文件存儲在專門的 LFS 儲存服務器上,減少了儲存庫的大小並提升了操作速度。

會想寫這篇科普文是因為在HuggingFace下載模型的時候,會用到lfs相關的指令,關於指令的教學會在之後再寫。

# Make sure you have git-lfs installed (https://git-lfs.com)
git lfs install

git clone https://huggingface.co/audreyt/Taiwan-LLM-7B-v2.0.1-chat-GGUF

# If you want to clone without large files - just their pointers
GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/audreyt/Taiwan-LLM-7B-v2.0.1-chat-GGUF

下一篇會寫Git LFS安裝教學以及容易遇到的錯誤。

Linux Git LFS 安裝教學:Unable to locate package git-lfs 解決方法

    喜歡 Weiberson 的文章嗎?在這裡留下你的評論!本留言區支援 Markdown 語法