Darmowe konto na bitbucket.org ma ograniczenie do 1GB:
Your workspace has exceeded the 1 GB limit and has been placed in read-only mode. Learn more about upgrading your plan and checking storage usage. — Learn more
Na stronie https://bitbucket.org/[nazwa_workspace]/workspace/repositories/ można sprawdzić które repo zajmuje najwięcej miejsca.
Aby usunąć duże pliki w wybranym repozytorium należy:
1. Wyszukać duże pliki w historii:
git rev-list --objects --all \
| git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' \
| grep '^blob' \
| sort -k3 -n -r \
| head -20 \
| awk '{print $3/1024/1024 " MB\t" $4}'
Ten skrypt:
- przeszukuje całą historię (--all)
- pokazuje tylko bloby (czyli treść plików)
- sortuje według rozmiaru
- wyświetla 20 największych plików wraz z rozmiarem
2. Usunąć wybrany plik z historii
git filter-branch --force --index-filter "git rm --cached --ignore-unmatch duzy_plik.zip" --prune-empty --tag-name-filter cat -- --all
3. Wyczyścić śmieci i zmniejszyć rozmiar repozytorium:
rm -rf .git/refs/original/ git reflog expire --expire=now --all git gc --prune=now --aggressive
4. Wypchnąć zmiany do Bitbucket (UWAGA!!!: to nadpisuje historię):
git push --force --all git push --force --tags
Uwaga!!!:
To usuwa plik z każdego commita w całym repo.
Jeśli ktoś inny korzysta z repozytorium, musi ponownie je sklonować, bo historia została zmieniona.
Lepiej zrobić backup repo przed tą operacją.
Źródło: https://chatgpt.com/