При розміщенні 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".