3 回答

TA貢獻1812條經驗 獲得超5個贊
問題git gc --aggressive在于選項名稱和文檔具有誤導性。
正如Linus自己在這封郵件中解釋的那樣,git gc --aggressive基本上是這樣的:
盡管git通常會嘗試重用增量信息(因為這是個好主意,而且不會浪費CPU時間重新查找我們之前發現的所有良好的增量),但有時您還是想說“讓我們重新開始,空白板,并忽略所有以前的增量信息,并嘗試生成一組新的增量”。
通常,無需重新計算git中的增量,因為git可以非常靈活地確定這些增量。僅當您知道自己有非常非常差的增量時才有意義。正如Linus解釋的那樣,主要利用這些工具的工具就git fast-import屬于此類。
大部分時間git在確定有用的增量方面做得非常好,使用Delta git gc --aggressive將使您產生可能浪費更長時間的CPU的增量。
萊納斯結束了他的郵件與結論,即git repack用大--depth而--window在大多數時間是更好的選擇; 尤其是在導入大型項目并希望確保git找到良好的增量之后。
因此,相當于(git gc --aggressive但正確完成)的事情是(隔夜)做類似的事情
git repack -a -d --depth=250 --window=250
深度是關于增量鏈有多深(在較長的歷史記錄中使它們更長-這是值得的空間開銷),而窗口是關于我們希望每個增量候選對象掃描多大的對象窗口。
在這里,您可能要添加-f標記(即“刪除所有舊的增量”,因為您現在實際上正在嘗試確保該標記確實找到了合適的候選者。
- 3 回答
- 0 關注
- 2245 瀏覽
添加回答
舉報