Bitbucket: Usuń folder z historii Git

Podczas hostowania Gita na Bitbucket obowiązuje sztywny limit 2 GB - jeśli zostanie przekroczony, masz dostęp tylko do odczytu do repozytorium. Aby temu zapobiec, możesz na przykład retrospektywnie usunąć duże foldery lub pliki ze swoich zatwierdzeń. Ale także w innych przypadkach (jeśli dane dostępowe weszły do ​​historii lub node_modules wróciły do ​​nadrzędnego) musisz retrospektywnie manipulować historią Gita, wbrew jego 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