前言

繼上一篇 Python 動態提取中文字型

雖然將字型瘦身成功,但是每次更新貼文都需重新建立一個 woff 字型檔。

這對於這個基於 GitHub Pages、引入版本控制系統的部落格不是很友善。

每次提交,Git 都會對二進位的檔案產生副本,時間一久,.git目錄就會愈來愈大。

我有嘗試過 Git LFS 服務,但 GitHub Pages 不支援該服務,無法正常顯示網頁。

最終,我找到了一個折衷的方法,就是定期清理.git目錄。

然而public目錄的儲存空間,因版本控制加上原始檔,同一個二進位檔案會於硬碟中存在三份。

在上述的前提下,若要減少佔用的儲存空間,目前似乎無解。


實作過程

  1. 先將指定的檔案於每個提交中刪除(本例為*/jf-openhuninn.woff):

    git filter-branch --force --index-filter "git rm -rf --cached --ignore-unmatch */jf-openhuninn.woff" --prune-empty --tag-name-filter cat -- --all
    

    也可使用以下指令查詢提交中已刪除的檔案,方便清理:

    git log --diff-filter=D --summary | grep delete
    
  2. 欲刪除的檔案都刪除後,刷新檔案列表:

    git filter-branch --force
    
  3. 使垃圾檔案立刻過期,並調用垃圾回收機制將其回收:

    git reflog expire --expire=now --all
    
    git gc --prune=now --aggressive
    
  4. 清理完畢,並重新hugo之後,用以下指令上傳並覆蓋遠端 repo。

    git push --mirror
    

    建議作成一個.sh腳本,方便使用。