[英]How to reduce git repo size on Bitbucket?
我的問題摘要:在向兩個現有文件添加幾百個字節后,我在 Bitbucket 上的一個私人存儲庫的大小突然增加了一倍多。 存儲庫現在超過 2GB,這導致 Bitbucket 將其置於只讀模式。 因為它處於只讀模式,所以我無法推送會減少 repo 大小的更改。 (第 22 條。)
詳細信息:我的公司最近開始在 Bitbucket 上托管 git 存儲庫。 我負責的其中一個存儲庫的大小約為 973MB,令人不安地接近 1GB 的軟限制。 為了減少存儲庫的大小,我按照 Bitbucket 文檔文章將存儲庫分成兩部分中的說明操作,並將價值約 450MB 的文檔和在線幫助文件移動到他們自己的私有存儲庫中。 然后我按照 Bitbucket 文檔文章Reduce repository size和Maintaining a git repository 中的說明進行操作,特別是:
git count-objects -vH
向我展示了一個大約 973MB 的大小包。
我運行git filter-branch --index-filter 'git rm --cached --ignore-unmatch doc' HEAD
來刪除 doc 目錄(這是我移動到新倉庫的內容)。
我運行了以下命令來使引用過期和修剪:
git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d
git reflog expire --expire=now --all
git gc --prune=now
git count-objects -vH
然后向我展示了一個 881.1 MiB 的大小包, du -sh .git/objects
返回了 882M。 我很失望移動超過 450MB 將 repo 大小減少了不到 90MB,但仍然將更改推送到 Bitbucket:
git push --all --force
git push --tags --force
該存儲庫的 Bitbucket 副本的設置頁面繼續顯示 973MB 的大小。 我注銷,刷新瀏覽器,重新登錄,但這沒有幫助——repo 大小保持在 973MB。
今天早上(上述更改三天后)我對兩個現有文件進行了一些小添加,將文件的大小總共增加了不到 1KB,將它們添加並提交到我的本地存儲庫,然后將更改推送到比特桶。 幾分鍾后,我查看了該存儲庫的 Bitbucket 頁面,看到一個紅色警告橫幅,通知我“此存儲庫超過 2 GB 限制並且處於只讀模式。” 設置頁面現在顯示 repo 的大小為 2.3 GB。
根據 Bitbucket 的說法,向兩個文件添加幾百字節的推送絕對是過去三天在遠程存儲庫上發生的唯一活動。 這種推動可能不是回購規模增加一倍以上的原因,但這兩個事件在時間上密切相關。
git reflog show
返回任何內容。
將新副本克隆到備用目錄中,然后運行 git count-objects 會得到 881.29 MiB 的大小包。
本地存儲庫位於 CentOS 6.5 系統上。 git 版本是 1.8.5.3。
問題
我發現如果超過 2GB 限制,減少 Bitbucket 存儲庫大小的最簡單方法是
這應該會觸發 Bitbucket 在 repo 上運行git gc
。
在與 Bitbucket 技術支持商討后,我現在可以回答我自己的一些問題:
首先,使用以下命令檢查本地存儲庫的大小:-
git count-objects -Hv
我們可以使用以下命令
git reflog expire --expire="1 hour" --all
git reflog expire --expire-unreachable="1 hour" --all
git prune --expire="1 hour" -v
git gc --aggressive --prune="1 hour"
現在,再次使用命令git count-objects -Hv
來注意存儲庫大小和垃圾的變化
這是 bitbucket 雲端的一個已知錯誤,請參閱BCLOUD-19794 。
垃圾文件間歇性地計入存儲庫大小。
當推送到遠程存儲庫時,隨后會觸發 GC,從而生成垃圾文件。 這個垃圾文件在下一次后續 GC 中被清除。 在這兩個 GC 之間,存儲庫的大小在 Bitbucket UI 中顯示不正確,因為垃圾文件大小間歇性地計入存儲庫總大小。
如變通方法部分所述,您需要聯系 bitbucket 以手動運行 GC。
如果有足夠多的人投票支持,Bitbucket 可能會盡早采取行動。
我相信那些熟悉的人已經知道了,但是 git 會存儲您的文件版本歷史記錄,因此進行更改和推送文件不會減少您的存儲庫大小。
還有幾種方法可以減少 bitbucket、GitHub、gitlab 等上的 repo 大小。最好的方法是刪除分支,因為這會永久刪除該分支記錄的任何文件,只要它不被另一個分支跟蹤即可。 但是您可能需要該分支中的最新文件,因此請執行以下操作:
--cached
刪除遠程分支。根據主機的不同,您可能必須運行特殊命令,但這在大多數情況下應該有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.