Bitbucket: usuń folder z historii Git

Podczas hostowania Git na Bitbucket obowiązuje sztywny limit 2 GB - jeśli zostanie przekroczony, masz dostęp tylko do odczytu do repozytorium. Aby temu zapobiec, na przykład, usuwasz z dużą mocą duże foldery lub pliki z zatwierdzeń. Ale także w innych przypadkach (jeśli dane dostępowe weszły do ​​historii lub moduły node_ ponownie wślizgnęły się na master), musisz retrospektywnie manipulować historią Gita wbrew jego naturze.


Bitbucket napisał szczegółowy artykuł na ten temat. Aby przejść przez całą sprawę w jednym przypadku, najpierw tworzymy nowe repozytorium:

czysta historia bitbucket

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

6ab7686fc508ce87c52b10bb5d01ee51

Teraz tworzymy dwa podfoldery z plikami losowej zawartości:

6ab7686fc508ce87c52b10bb5d01ee51

Naciskamy teraz na mistrza:

6ab7686fc508ce87c52b10bb5d01ee51

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

czysta historia bitbucket

Możemy to również sprawdzić lokalnie (patrz „pakiet wielkości”):

6ab7686fc508ce87c52b10bb5d01ee51

czysta historia bitbucket

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

6ab7686fc508ce87c52b10bb5d01ee51

Na koniec usuwamy folder za pomocą BFG Repo Cleaner (BFG wymaga bieżącego środowiska JRE w systemie jako wymaganie systemowe):

6ab7686fc508ce87c52b10bb5d01ee51

Teraz widzimy wynik lokalnie:

6ab7686fc508ce87c52b10bb5d01ee51

czysta historia bitbucket

Jednak rozmiar repozytorium nie zmienił się jeszcze w Bitbucket, ponieważ moduł śmieciowy nie został jeszcze uruchomiony zdalnie, a bitbucket nie wykonuje „git gc” przy każdym wypchnięciu:

czysta historia bitbucket

Wsparcie to również potwierdza:

czysta historia bitbucket

Dlatego najlepiej wysłać zapytanie bezpośrednio na adres support@bitbucket.org, aby ręcznie uruchomić „git gc” w repozytorium. Po krótkim czasie zrobił to również zespół wsparcia:

czysta historia bitbucket

Jeśli teraz „świeżo” przeciągniesz repozytorium na inny komputer, na dysku znajdzie się tylko 0,9 GB. Jeśli ktoś nadal ma lokalnie dostępną wersję 1,8 GB, wystarczy „pull git”, a następnie „git gc”.

Plecy