工具: git-repo瘦身

Github網盤用的久了以後, 空間可能會有點不夠用.

在 Mathematica 中如果你追蹤了notebook的話,repo會迅速膨脹

因為圖表之類的對象都是直接渲染出來圖片, 相當於存了一堆圖

但是 diff/trace notebook 的需求在整個研究周期中是客觀存在的

notebook其實類似於實驗室, 富文本格式有利於快速測試並改進原型代碼

整個實驗過程中當然要追蹤所有的實驗數據

但真正的核心源碼還是用plaintext的wl文件比較好


不過久而久之呢, 項目就會變得很臃腫

那麼研究周期結束後怎麼辦呢, 就算直接刪了也沒用啊

文件還是存在於歷史中啊

git filter-branch 遍歷 history tree 是原生解決方案...

但是相信我, 用這個會瘋掉的...

我們有個神器哦

BFG Repo-Cleanerrtyley.github.io

把你下載來的bfg.jar直接扔進工作目錄

(這樣就不用配Java了, 另外用.gitignore直接濾掉就行)

然後原地起一個控制台輸入如下命令

java -jar bfg.jar --delete-files *.cdfnjava -jar bfg.jar --delete-files *.nbngit reflog expire --expire=now --all && git gc --prune=now --aggressivengit push -fn

這些命令會幹掉所有歷史中存在但是現在不存在的cdf/nb文件

然後強推到遠端就行了

注意, 這是破壞性同步, 歷史會直接斷開

無法Revert/Reset到之前, 但是歷史代碼(除了被刪掉的)其實還是訪問的.

所以保險起見使用 git clone -mirror 克隆一份備份

Bingo, 可以看到容量立馬下來了

當然進行新工作前最好pull一波以防奇怪的問題

只有該次操作需要force push...如果之後還要求force push...趕快把你的備份覆蓋回去...


BFG還可以用於定點清除誤傳的敏感文件...

BFG自動保護現有文件, 如果當前就有要刪除的文件...讓他變成歷史然後清理掉最保險..

話說有了這個我甚至肆無忌憚的準備把參考資料等pdf也裝進豪華多平台客戶端可同步帶歷史追溯容量無極限自帶分享功能的高級網盤Github!


推薦閱讀:

有什麼高質量的現代C++風格的開源代碼?
如何在 GitHub 看源代碼學習呢?
要讀別人的代碼,應該如何入手?
如何優雅的管理 github 上 star 的項目?
如何看待大學CS課程中普遍存在的GOP(Github Oriented Programming)現象?

TAG:GitHub | WolframMathematica |