為什麼 clone 下來的檔案不是正確的格式?認識 Git LFS
- Leo
- 技術宅 ( tech geek)
- 2024年2月22日
目錄
最近遇到同事 git clone 一個專案,發現 clone 下來的壓縮檔居然是文字檔案!但我們在遠端看到的是壓縮檔,為什麼會這樣呢?原來是因為專案使用了 Git LFS,所以在 clone 時,只會 clone 下來指標檔案,而不是實際的大型檔案。這篇文章就來介紹一下 Git LFS。
Git Large File Storage(Git LFS)是一個 Git 擴展,用於改善大型二進制文件的處理。它通過將這些大型文件的實際內容存儲在遠程服務器上,並在 Git 倉庫中放置一個指針文件來實現這一點。這個指針文件是一個小的文本文件,包含了指向實際存儲位置的必要信息。
如果沒有安裝 Git LFS,當你使用 git clone
克隆一個包含 LFS 對象的倉庫時,Git 只會克隆包含指針的文本文件,而不是大型文件的實際內容。這是因為 Git 默認不知道如何處理這些指針文件所指向的大型文件。
這些文本指針文件通常包含以下信息:
- 版本信息,表明該文件是由 Git LFS 管理的
- 大型文件的 SHA-256 哈希值,用於唯一標識文件內容
- 大型文件的大小
例如,一個 Git LFS 指針文件可能看起來像這樣:
version https://git-lfs.github.com/spec/v1
oid sha256:ce013625030ba8dba906f756967f9e9eef7e9b40e4e8b3464285c1a31a2a7a31
size 12345
如果你想要克隆倉庫並獲得大型文件的實際內容,你需要先安裝 Git LFS。一旦安裝並設置好,當你克隆倉庫或拉取更新時,Git LFS 會自動替換這些指針文件為對應的大型文件。
以下是添加 Git LFS 到你的 Git 倉庫的流程:
安裝 Git LFS
首先,你需要在你的機器上安裝 Git LFS。這可以通過不同的方式完成,取決於你的操作系統。
對於 Windows,你可以使用 Chocolatey :
choco install git-lfs -y
對於 macOS,你可以使用 Homebrew :
brew install git-lfs
對於 Ubuntu/Debian:
sudo apt-get install git-lfs -y
初始化 Git LFS
安裝完 Git LFS 之後,你需要在你想要使用它的倉庫中初始化它。這可以通過執行以下命令完成:
git lfs install
選擇要追蹤的文件類型
接下來,你需要指定哪些文件類型應該由 Git LFS 處理。這是通過使用 git lfs track
命令來完成的。例如,如果你想要追蹤所有 .zip
文件,你可以執行:
git lfs track "*.zip"
這將會更新 .gitattributes
文件,將指定的文件模式添加到其中。
添加文件並提交
將文件添加到你的倉庫中,就像你通常使用 Git 一樣:
git add file.zip
git commit -m "Add large file"
推送到遠端倉庫
最後,當你推送到遠端倉庫時,Git LFS 將會自動處理大文件的上傳。
git push origin main
請注意,當你克隆或拉取使用 Git LFS 的倉庫時,你可能需要使用特殊的命令來拉取大文件:
git lfs pull