清理 .git
前言
繼上一篇 Python 動態提取中文字型。
雖然將字型瘦身成功,但是每次更新貼文都需重新建立一個 woff 字型檔。
這對於這個基於 GitHub Pages、引入版本控制系統的部落格不是很友善。
每次提交,Git 都會對二進位的檔案產生副本,時間一久,.git
目錄就會愈來愈大。
我有嘗試過 Git LFS 服務,但 GitHub Pages 不支援該服務,無法正常顯示網頁。
最終,我找到了一個折衷的方法,就是定期清理.git
目錄。
然而public
目錄的儲存空間,因版本控制加上原始檔,同一個二進位檔案會於硬碟中存在三份。
在上述的前提下,若要減少佔用的儲存空間,目前似乎無解。
實作過程
-
先將指定的檔案於每個提交中刪除(本例為
*/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
-
欲刪除的檔案都刪除後,刷新檔案列表:
git filter-branch --force
-
使垃圾檔案立刻過期,並調用垃圾回收機制將其回收:
git reflog expire --expire=now --all git gc --prune=now --aggressive
-
清理完畢,並重新
hugo
之後,用以下指令上傳並覆蓋遠端 repo。git push --mirror
建議作成一個
.sh
腳本,方便使用。
貼文底端