Git LFS 初探

Git LFS(Large File Storage, 大文件存儲),是 Github 開發的一個 Git 的擴展,用於實現 Git 對大文件的支持。Git v2.12後的版本才支持了Git LFS。通常會利用它來把項目中的大文件存儲在 Git 倉庫之外的地方,這樣就可以減小 Git 倉庫本身的大小, 從而達到加快 clone 速度的目的。

原理

舉一個典型的應用場景,在產品的版本迭代中,視覺設計師會把設計原稿psd文件放在你的項目中做響應的版本管理。這通常會是一個幾十甚至幾百兆的文件,每當設個設計稿(假設有100MB)更新後,你進行一次commit,就會在你的本地倉庫中以文件的形式增加一個100MB的歷史快照(放在.git文件夾中)。這樣你的本地倉庫就會迅速膨脹,然後再經過你push之後,遠程倉庫也會變的臃腫不堪。

而使用了LFS之後,在你每次push的時候,會把這些中間快照push到遠程倉庫之外的地方,取而代之的是會在倉庫中保留一份文件指針,指向這些中間快照。這樣遠程 Git 倉庫將會變的很簡潔,別人 clone 你的代碼時也會快很多。因爲不使用 LFS 的話,之前所有的快照都會被下載下來,而使用 LFS 的話只會下載當前 commit 版本對應的快照,所以內容會小很多。

下面是網絡上盜的一張圖

用法

安裝:git lfs install

追蹤文件:git lfs track "*.psd",第一次執行會在項目的根目錄的創建一個.gitattributes文件,裏面保存了文件的追蹤規則,有點類似於.gitignore的感覺。只不過.gitignore規定了哪些文件不上傳,而.gitattributes規定了哪些文件上傳到 LFS。執行了track之後,其他 Git 操作命令均不變。

查看現有的文件追蹤模式:git lfs track

查看當前被追蹤的文件列表:git lfs ls-files

注意:提交代碼時需將.gitattributes文件一併提交

常用 Git LFS 命令

# 查看當前使用 Git LFS 管理的匹配列表
git lfs track

# 使用 Git LFS 管理指定的文件
git lfs track "*.psd"

# 不再使用 Git LFS 管理指定的文件
git lfs untrack "*.psd"

# 類似 `git status`,查看當前 Git LFS 對象的狀態
git lfs status

# 枚舉目前所有被 Git LFS 管理的具體文件
git lfs ls-files

# 檢查當前所用 Git LFS 的版本
git lfs version

# 針對使用了 LFS 的倉庫進行了特別優化的 clone 命令,顯著提升獲取
# LFS 對象的速度,接受和 `git clone` 一樣的參數。 [1] [2]
git lfs clone https://github.com/user/repo.git
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章