我有一個三年的PowerBuilder二進制文件的git回購。回購是相當巨大的(不到10GB),我認爲,由於git只能爲二進制增量做很多事實。git repo充滿二進制文件扔掉舊歷史
我想讓這個回購到一個可管理的大小,我願意扔掉一堆早期歷史來做到這一點。我只是無法弄清楚如何讓git來做到這一點。我試圖用交互式rebase壓縮提交,但它提出了一些我不想處理的衝突。
有沒有辦法選擇一個提交,並扔掉一切之前呢?我意識到它會重寫後續提交的SHA-1,這是沒有問題的。
我有一個三年的PowerBuilder二進制文件的git回購。回購是相當巨大的(不到10GB),我認爲,由於git只能爲二進制增量做很多事實。git repo充滿二進制文件扔掉舊歷史
我想讓這個回購到一個可管理的大小,我願意扔掉一堆早期歷史來做到這一點。我只是無法弄清楚如何讓git來做到這一點。我試圖用交互式rebase壓縮提交,但它提出了一些我不想處理的衝突。
有沒有辦法選擇一個提交,並扔掉一切之前呢?我意識到它會重寫後續提交的SHA-1,這是沒有問題的。
您可以將整個演出重新整合爲一次提交。
喜歡的東西
git rebase -i [some early commit]
,然後在vim使用可視塊模式壁球他們幾乎都將是最簡單,跟一個fsck
和gc
運行。
或者,您可以使用git filter-branch
完全從樹中刪除提交。
這是一個(其它)的方式:
git fast-export master~5..master | (cd ../newrepo.git && git init . && git fast-import && git checkout)
上面的例子將在範圍master~5..master
提交和創建新回購出的那個。您也可以使用相同的回購,但上述將更安全。
你絕對可以使用rebase和squashes壓縮所有之前的提交。如果你有這麼多的提交,我仍然想要一個優雅/快速的方式來做到這一點。 – TheBuzzSaw 2012-02-08 02:37:08