GitHub repo 體積巨大?使用批處理工具來清除歷史版本
前言
筆者近日整理自己的 GitHub repo 庫的時候,發(fā)現(xiàn)其體積意料之外地巨大。尤其是其中一個 repo,本體約 30MB,repo 竟超過 500MB。

筆者對 Git 一知半解,于是查了些資料:Git 的版本管理機制會使 repo 不斷膨脹,commit 越頻繁的 repo 膨脹越快。且這個復雜的機制使得歷史版本不好刪除,這也是筆者撰寫本教程的緣由。
工具部署
本文以 Windows 環(huán)境為例,使用其他操作系統(tǒng)的讀者請參考其他教程。在使用批處理工具之前,讀者需要先部署以下工具:
① Git for Windows
對 GitHub repo 進行高級操作的基本工具。https://gitforwindows.org
② BFG Repo-Cleaner
GitHub repo 歷史版本清理工具,本教程的主角。https://rtyley.github.io/bfg-repo-cleaner/
③ Java Runtime Environment
上述工具依賴 Java 運行環(huán)境。https://www.java.com/en/download/manual.jsp
④ 網(wǎng)絡代理工具 與 SSH
俗稱梯子。本文提供的批處理代碼默認使用SSH代理來 push commit,以避免惱人的網(wǎng)絡問題。
本文不贅述SSH的配置方法。若您不使用SSH,可自行修改批處理代碼。
制作批處理文件
打開文本編輯器(例如 Visual Studio Code),粘貼以下代碼:
然后保存為 .bat 批處理文件,編碼為 UTF-8。
接下來將這個 .bat 文件以及 BFG 的 .jar 文件放置在 repo 庫目錄下,即 repo 目錄的上一層,再將 .jar 文件重命名為「bfg.jar」:

開始清理
雙擊運行 .bat 文件,按照提示鍵入所需信息:

批處理工具開始自動清理 repo 并提交至 GitHub。請留意 Git 輸出的信息,確認清理是否成功:

清理效果

參考資料
[1] https://blog.walterlv.com/post/clean-up-git-repo-using-bfg.html
[2] https://juejin.cn/post/7081841080278188040
[3] https://tjfish.top/posts/git%E8%AE%BE%E7%BD%AE%E4%BB%A3%E7%90%86%E8%A7%A3%E5%86%B3%E8%A2%AB%E5%A2%99/
[4] https://docs.github.com/en/authentication/troubleshooting-ssh/using-ssh-over-the-https-port