Bitbucket: Usuń folder z historii Git

Hostując Git na platformie Bitbucket , obowiązuje sztywny limit 2 GB - po jego przekroczeniu będziesz mieć dostęp do repozytorium tylko do odczytu. Aby temu zapobiec, możesz na przykład z mocą wsteczną usunąć duże foldery lub pliki ze swoich zatwierdzeń. Ale także w innych przypadkach (jeśli dane dostępowe trafiły do ​​historii lub moduły node_modules ponownie zostały opanowane) musisz z mocą wsteczną manipulować historią Gita, wbrew jej naturze.


Bitbucket napisał o tym szczegółowy artykuł . Aby przeprowadzić całą sprawę w sprawie, najpierw tworzymy nowe repozytorium:

Historia bitbucket jest czysta

Następnie klonujemy repozytorium do pustego folderu na komputerze lokalnym:

6ab7686fc508ce87c52b10bb5d01ee51

Teraz tworzymy dwa podfoldery z plikami o losowej zawartości:

6ab7686fc508ce87c52b10bb5d01ee51

Teraz naciskamy na mistrza:

6ab7686fc508ce87c52b10bb5d01ee51

Teraz prawie osiągnęliśmy twardy limit 2 GB na Bitbucket:

Historia bitbucket jest czysta

Możemy to również sprawdzić lokalnie (patrz „zestawienie rozmiarów”):

6ab7686fc508ce87c52b10bb5d01ee51

Historia bitbucket jest czysta

Teraz zadaniem jest retroaktywne usunięcie „foo” z repozytorium, aby zmniejszyć o połowę jego rozmiar. Aby to zrobić, najpierw edytujemy bieżący HEAD i zapisujemy folder w gitignore:

6ab7686fc508ce87c52b10bb5d01ee51

Na koniec usuwamy folder za pomocą narzędzia BFG Repo Cleaner (BFG wymaga aktualnego środowiska JRE w systemie jako wymagania systemowego):

6ab7686fc508ce87c52b10bb5d01ee51

Teraz możemy zobaczyć wynik lokalnie:

6ab7686fc508ce87c52b10bb5d01ee51

Historia bitbucket jest czysta

Ale w Bitbucket rozmiar repozytorium jeszcze się nie zmienił, ponieważ garbage collector nie został jeszcze wykonany zdalnie, a bitbucket nie wykonuje „git gc” przy każdym wypychaniu:

Historia bitbucket jest czysta

Potwierdza to również wsparcie:

Historia bitbucket jest czysta

Dlatego najlepiej jest wysłać prośbę bezpośrednio na adres support@bitbucket.org, aby ręcznie uruchomić „git gc” w repozytorium. Po krótkim czasie zajęło się to również wsparciem:

Historia bitbucket jest czysta

Jeśli „świeżo” przeniesiesz repozytorium na inny komputer, na dysku znajdzie się tylko 0,9 GB. Jeśli ktoś ma lokalnie dostępną wersję 1,8 GB, wystarczy „git pull”, po którym następuje „git gc”.

Plecy