在Github上要放大型二進位檔案, 是有限制的, 目前大於50MB就會收到警告, 也會提醒是否改用Git LFS(Large File Storage)。只要瀏覽到官網就會有相關說明, 這邊, 在Windows平台和Linux平台上瀏覽時, 下載和安裝的內容會自動判斷分別顯示對應平台的資訊。
在Windows平台上簡單地下載一個安裝檔, 基本就是按官網上說的做就可以了。
# 安裝
git lfs install
# 設定追踪檔案類型
git lfs track "*.bmp"
# 把標記檔也加入git
git add .gitattributes
# 接著就如一般git指令處理, add files, commit, push...
在Linux平台上有另一個透過PackageCloud取得, 以curl進行安裝的方式。若要使用得先確認有curl可用
sudo apt update
sudo apt upgrade
sudo apt install curl
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt install git-lfs
然後後面的步驟就同Windows上的git指令的使用方式。在使用上, 可以先用 git-lfs version 指令查, 我目前安裝的版本為2.11.0, 基本指令可以參考官網上的說明, 首先第一個應該是把檔案加入追踪。
這裡的 pull 和 push 都有LFS自己的指令, 例如: git lfs pull。不過, 這應該是進階的用法, 針對如果你是單純要取得LFS內容的情境。若是這個專案中的LFS檔案是你在開發時, 也同時必要取得最新版本時, 或你不會把LFS檔案和一般原碼檔案分開來用的話, 那其實仍用一般的 git pull 和 git push 就能同時取得專案中的LFS檔案和原碼檔案。
在使用上有發現在轉成LFS後做 push 效率非常不好, Uploading LFS objects都很慢, 速度皆在10 KB/s上下, 這樣的速度一個8MB多的檔案可能就要半小時才能傳好, 好在查詢和測試之後, 發現得要針對每個local branch做過以下動作, 才能回到原本應有的速度。可參考官網說明
# 先查整個repository各種檔案類型有各佔多少空間
git lfs migrate info --include-ref=master

再做import
# 歷史記錄重寫
git lfs migrate import --include-ref=master --include="*.zip"
# 或是不重寫歷史
git lfs migrate import --no-rewrite test.zip *.mp3 *.psd
以我的情況, 處理後的速度可以是未處理前的6倍以上, 好多了。
更新: 2020/8/10
本以為做了以上migrate動作後會改善我在Windows平台下的push效率問題, 但結果並沒有。以關鍵字: git lfs slow windows 上網查找, 的確有幾篇提到在Windows上相對比在macOS或Linux上來得慢的討論, 但卻是好一段時間之前的, 心想這種問題應該不會留著這麼久; 另外, 也參考官網上Wiki說明的Limitations中提到安裝Windows平台的GCM, 但也沒有真正解決此一問題。
最後, 在不經意的情況下發現, 原來是家Wifi的問題, 改用有線連網時一切回復正常。原先有Windows比Linux慢許多的錯覺, 原因是開發測試時是在Windows平台的筆電上, 且常用Wifi上網, 在Linux上則是做為定時排程運作, 一直都是用有線連網。終於真相大白, 接下來就是好好查查家裡Wifi怎麼了。
更新: 2021/5/27
先前Wifi的問題, 在改用有線網路後得以避開, 但總是有不得不用Wifi的時候。再次遇到, 逼得我不得不好好測試檢查, 今日終於把問題找出來了。在未改善之前使用Wifi上傳的狀況可以用悽慘來形容。用幾個不同的網速測試工具來測, 下載的速度都符合家中申請的網路速度, 而上傳應為40Mbps, 可憐的測試結果竟連1Mbps都不到, 難怪會有先前git的問題。
幾經交叉測試, 調整分享器設、使用不同網路來源(行動數據網路)、找另一台電腦來測Wifi, 發現問題都指向我目前使用的筆電的Wifi網卡, 再調整網卡的設定也得不到改善, 最後朝向我的開發環境建置來查。因為有使用Hyper-V, 曾使用Wifi做為VM的連線使用, 因此在 Hyper-V管理員 中的 虛擬交換器管理員 上加入了Wifi的使用
就是這裡, 把Wifi的虛擬交換器移除掉, 再重新測試, 我的Wifi上傳速度終於回來了, 歡呼。
