【Git】Git LFS:Git Large File Storage

下載 https://git-lfs.github.com/

$ git lfs install
設定檔在 ~/.gitconfig裡,多了這幾行



[filter "lfs"]
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true
clean = git-lfs clean -- %f

$ git lfs track "*.mp4"

若要一次追蹤多個副檔名檔案
$ git lfs track "*.mp4" "*.mp3" "*.mkv" "*.wav" "*.wmv" "*.3gp" "*.ppt" "*.pptx" "*.jpg" "*.png" "*.pdf" "*.rar" "*.zip"

track完後,資料夾底下就多了.gitattributes檔,內容為:
*.mp4 filter=lfs diff=lfs merge=lfs -text
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
*.wmv filter=lfs diff=lfs merge=lfs -text
*.3gp filter=lfs diff=lfs merge=lfs -text
*.ppt filter=lfs diff=lfs merge=lfs -text
*.pptx filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
$ git add .gitattributes



接下來就是平常熟悉的上傳步驟
$ git add *... 
$ git commit ...
$ git push



註:已經上傳在github(遠端)中的大型檔案,沒辦法被以上方法追蹤到。



當下載的時候,一樣是平常熟悉的下載步驟
$ git clone ...$ git pull

但那些追蹤中的大型檔案不會被完全下載下來,
只會留有檔名 及以下的特徵資料(133~134 Bytes),所以沒辦法開啟
version https://git-lfs.github.com/spec/v1
oid sha256:2df1f9d299ad32c55d29880629681777bc9e1c227c1ba8a46dae4a3a44db8652
size 50024
要下lfs指令才會開始下載大型檔案同步到本地端。

$ git lfs pull





下載大型檔案前 / 下載大型檔案後 大小比較






搬遷已有大型文件到git lfs

如果已經有大型文件不小心先上傳到git了
後來想讓lfs控管的話

$ git lfs migrate import --include="*.mp4,*.pdf" --everything


再次檢查git lfs追蹤的文件

$ git lfs ls-files


強行推送到遠端儲存庫

$ git push origin --force