Kategoria - GIT - liczba wpisów 1

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/