2016-11-03 83 views
0

我有一個Git倉庫,有一些Blob簽入。我清除它們並清理歷史記錄。這一切似乎都沒有問題。Git GC後Git Push說「一切都是最新的」

現在,如果我做了

git checkout master 

我得到一個200 MB的下載

git count-objects -v 

顯示在包:21409

git gc --aggressive --prune=now 

其次

git count-objects -v 

顯示包裝內:15976

然而,我遇到了麻煩的繼承人。

git push origin --force --tags 

給我 一切了最新

git status 

給我

分支主 你的分支上最新與'產地/碩士。 沒有提交,工作目錄乾淨

,如果我在這一點上,我開始了與21409 重新克隆回購如何推git的GC達到主這樣下來乾淨,每次來?

+1

'git status'給了什麼? –

+0

以及如何從存儲庫中的blob中清除這些內容? –

+0

git filter-branch --tree-filter「rm -rf node_modules」--prune-empty HEAD,但已經提交併推送到回購站。 – David

回答

2

您無法將垃圾回收數據推送到服務器。您需要在服務器上運行

git gc 

。或者等待一兩個星期,直到服務器自動調用垃圾回收。

它是有道理的,試圖推動清理數據確實回來everything up to date:垃圾收集不會改變你的回購內容,它只會刪除不需要的數據(不在分支機構或標籤)和壓縮冗餘數據(不更改任何實際數據)。

推送分支意味着推送該分支所需的所有數據。 gc可能已經刪除的所有不需要的東西不是任何分支的一部分,所以Git甚至不會嘗試推送它。

另外你的機器上的分支和服務器是一樣的,它只是以不同的表示。無需再次上傳。

如果您從歷史中刪除它們,Git不會刪除提交。它只是將它們從圖中斷開。然後Git(服務器和客戶端)定期運行gc,刪除不需要的提交併重新打包所需的提交。

+0

哎喲..不是我希望聽到的,但謝謝 – David

相關問題