我一直在試圖通過移動一些文件到git LFS來減少我的Git倉庫的大小。還有幾百條命令,這裏我們使用git LFS中的文件,並且在我的git commit中沒有更多這些文件的歷史記錄。如何刪除遠程git倉庫中的懸掛提交像VSTS
但是,無論何時我克隆存儲庫,我仍在下載大約3GB的對象。我通過在Visual Studio Team Services中創建一個新的存儲庫,並在本地修剪和垃圾收集我的存儲庫之後解決了這個問題,然後在那裏進行推送,將其減少到300mb。 (命令做到這一點本地發現在這篇文章中:Git: what is a dangling commit/blob and where do they come from?)
但我無法想象,你總是要刪除/重新創建一個完整的存儲庫,以刪除懸而未決的提交。
我也試過做一個git init,然後將它推到現有的存儲庫上,但它只是進一步增加了對象數量。
對於任何人也遇到類似的問題,這些都是我執行而不晃來晃去的提交創建一個新的存儲庫的命令,但是我想了解如何在現有的存儲庫這樣做,而不必刪除它:
git clone https://avavedse.visualstudio.com/Test/_git/TestRepository
cd blahblah
git reflog expire --expire=now --all
git gc --prune=now
git remote add newrepo https://avavedse.visualstudio.com/Test/_git/TestRepositoryNewEdition
git push newrepo
LFS重寫是一個非常重要的修改回購;爲什麼你「不能想象」它需要完全更換遙控器?爲了記錄,如果遠程的託管服務提供了對'git gc'的控制,那麼你可能*能夠清理它而不是替換它,但我通常不會指望它。 –
因爲它意味着必須實際對存儲庫進行功能更改才能解決技術限制。 – Devedse
如何?你有一個遙控器和一組裁判;你刪除它,並用一個新的repo替換它,它具有相同的引用(指向相同的提交,甚至),但膨脹更少。那是什麼功能變化?相比之下,當您運行LFS遷移(將所有引用修改爲指向新提交)時,*已經是功能更改*,這將需要任何用戶執行恢復(最容易通過丟棄和替換所有克隆來處理) 。由於LFS遷移是可以發生的功能變化,我不理解這個問題 –