2010-11-10 58 views
4

最近我已經將大量文件添加到本地倉庫,並將這些文件外部推送到其他倉庫。在我意識到這一點之後,我做了一些關於該主題的搜索,並使用git reset完全刪除了這些文件。我還做了一些其他的事情來優化回購(git gc,repack)。現在我的本地副本從400MB下降到100MB以下。問題是,我在heroku網站上的回購仍然被列爲400MB,並且我不確定是否有我應該做的事情,以反映所有更改爲遠程回購?如何優化遠程GIT倉庫 - 主要是Heroku

+3

'git gc'在內部調用'git repack',所以一般不需要直接重新打包。 – Cascabel 2010-11-10 14:19:34

+0

如果你有能力把它拿下來,進入維護模式,你可以嘗試將一個小的git倉庫推向heroku,並覆蓋它。你會有警告,跟着他們來強制推送(我不記得細節)。然後在那裏強制你的真正回購。這不是一個真正的答案,因爲我不知道git gc如何用這些文件改變你的git歷史。 – oma 2010-11-13 19:45:52

回答

6

與本地回購一樣,git gc是將清除所有鬆散對象(如您的文件不再是歷史記錄的一部分的Blob)的操作。當您有權訪問遙控器時,可以直接進行此操作。如果絕對沒有辦法做到這一點,那麼你堅持等待,直到你的推動觸發器git gc --auto。這是保證最終發生的,所以除非實際上存在400MB的回購問題(例如支付更多的託管費用),否則這不是問題。從回購中獲取/提取/克隆的任何人都將獲得他們需要獲得的100MB。

我相信github也會定期在儲存庫上運行git gc;我不知道Heroku是否做了這樣的事情。

+0

Github似乎並沒有定期運行gc(或者至少在沒有活動的版本庫上) – 2012-12-03 18:03:03

+0

@Romuald我認爲它實際上是通過git間接運行的。我不知道如何知道它是否在沒有任何活動的遠程存儲庫上運行 - 它不應該產生除repo大小以外的任何遠程可見更改,並且repo不一定要重新打包以足以改變這種情況。 – Cascabel 2012-12-03 19:04:20