2012-02-08 55 views
5

我有一個三年的PowerBuilder二進制文件的git回購。回購是相當巨大的(不到10GB),我認爲,由於git只能爲二進制增量做很多事實。git repo充滿二進制文件扔掉舊歷史

我想讓這個回購到一個可管理的大小,我願意扔掉一堆早期歷史來做到這一點。我只是無法弄清楚如何讓git來做到這一點。我試圖用交互式rebase壓縮提交,但它提出了一些我不想處理的衝突。

有沒有辦法選擇一個提交,並扔掉一切之前呢?我意識到它會重寫後續提交的SHA-1,這是沒有問題的。

+0

你絕對可以使用rebase和squashes壓縮所有之前的提交。如果你有這麼多的提交,我仍然想要一個優雅/快速的方式來做到這一點。 – TheBuzzSaw 2012-02-08 02:37:08

回答

0

您可以將整個演出重新整合爲一次提交。

喜歡的東西

git rebase -i [some early commit] 

,然後在vim使用可視塊模式壁球他們幾乎都將是最簡單,跟一個fsckgc運行。

或者,您可以使用git filter-branch完全從樹中刪除提交。

1

這是一個(其它)的方式:

git fast-export master~5..master | (cd ../newrepo.git && git init . && git fast-import && git checkout) 

上面的例子將在範圍master~5..master提交和創建新回購出的那個。您也可以使用相同的回購,但上述將更安全。