При размещении Git на Bitbucket существует жесткое ограничение в 2 ГБ - если оно превышено, у вас будет доступ только для чтения к репозиторию. Чтобы предотвратить это, например, вы можете ретроспективно удалить большие папки или файлы из своих коммитов. Но также и в других случаях (если данные доступа вошли в историю или node_modules вернулись к мастеру) вам придется ретроспективно манипулировать историей Git, вопреки его природе.
Bitbucket написал об этом подробную статью . Чтобы выполнить все действия по кейсу, мы сначала создаем новый репозиторий.:
Затем мы клонируем репозиторий в пустую папку на локальном компьютере.:
6ab7686fc508ce87c52b10bb5d01ee51
Теперь создаем две подпапки с файлами случайного содержания.:
6ab7686fc508ce87c52b10bb5d01ee51
Мы сейчас подталкиваем к хозяину:
6ab7686fc508ce87c52b10bb5d01ee51
Теперь мы почти достигли жесткого лимита в 2 ГБ на Bitbucket.:
Мы также можем проверить это локально (см. «Размерный пакет»).:
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».