Bitbucket: Видалити папку з історії Git

При розміщенні Git на Bitbucket існує жорсткий ліміт 2 ГБ - якщо це перевищено, ви маєте доступ лише до читання до сховища. Для запобігання цьому, наприклад, ви можете ретроспективно видалити великі папки або файли зі своїх комітів. Але також і в інших випадках (якщо дані доступу увійшли в історію або node_modules повернулися до майстра), вам доведеться ретроспективно маніпулювати історією Git, всупереч її природі.


Про це Bitbucket написав докладну статтю . Щоб виконати все це на справі, ми спочатку створюємо нове сховище:

історія

Потім ми клонуємо сховище до порожньої папки на локальній машині:

6ab7686fc508ce87c52b10bb5d01ee51

Тепер ми створюємо дві підпапки з файлами випадкового вмісту:

6ab7686fc508ce87c52b10bb5d01ee51

Зараз ми натискаємо на господаря:

6ab7686fc508ce87c52b10bb5d01ee51

Зараз ми майже досягли жорсткого обмеження в 2 Гб на Bitbucket:

історія

Ми також можемо перевірити це локально (див. "Size-pack"):

6ab7686fc508ce87c52b10bb5d01ee51

історія

Завдання полягає в тому, щоб назад зі сховища видалити "foo", щоб зменшити його розмір удвічі. Для цього ми спочатку редагуємо поточний HEAD і записуємо папку в gitignore:

6ab7686fc508ce87c52b10bb5d01ee51

Нарешті, ми видаляємо папку за допомогою BFG Repo Cleaner (BFG вимагає поточного JRE в системі як системну вимогу):

6ab7686fc508ce87c52b10bb5d01ee51

Тепер ми можемо бачити результат локально:

6ab7686fc508ce87c52b10bb5d01ee51

історія

Однак розмір сховища не змінився на Bitbucket, оскільки збирач сміття ще не був запущений віддалено, і bitbucket не виконує "git gc" при кожному натисканні:

історія

Це також підтверджує підтримка:

історія

Тож найкраще надіслати запит безпосередньо на support@bitbucket.org, щоб вручну запустити "git gc" у сховищі. Через короткий час це також зробила команда підтримки:

історія

Якщо ви "щойно" перемістите сховище на інший комп'ютер, на диску опиниться лише 0,9 ГБ. Якщо хтось має версію 1,8 ГБ, доступну локально, достатньо "git pull", а потім "git gc".

Назад