BFG Repo-Cleaner как за секунды удалить то, что вы случайно закоммитили в Git

19 Jan, 2025

Репозиторий давно не обновлялся

Последнее обновление было 1 год назад.

12,157
🔱 583
👥 95

Знакомая ситуация? Вы только что обнаружили, что в вашем Git-репозитории уже год лежит 100-мегабайтный дамп базы данных с реальными пользовательскими данными. Или, что хуже — файл с паролями от продакшена. Стандартный git-filter-branch работает мучительно медленно, особенно на больших репозиториях. Именно для таких случаев создан BFG Repo-Cleaner — специализированный инструмент для быстрой очистки Git-репозиториев.

Что это за инструмент и кому он нужен

BFG Repo-Cleaner — это альтернатива git-filter-branch, написанная на Scala. Главное преимущество — скорость: разработчик заявляет о 10-720-кратном ускорении по сравнению со стандартным решением.

Инструмент особенно полезен:

  • Разработчикам, которые работают с большими репозиториями
  • Командам, которым нужно удалить случайно закоммиченные секреты
  • Администраторам, оптимизирующим размер репозиториев

Три главных суперспособности BFG

1. Удаление "слонов" в репозитории

Проблема больших файлов знакома многим. BFG решает её одной командой:

$ bfg --strip-blobs-bigger-than 100M my-repo.git

Эта команда удалит все двоичные объекты больше 100 МБ во всей истории репозитория.

Реклама

2. Чистка чувствительных данных

Случайно закоммитили пароли или ключи API? BFG может заменить их во всей истории коммитов:

$ bfg --replace-text passwords.txt repo.git

Где passwords.txt содержит список строк для замены (например, реальные пароли).

3. Бережная работа с историей

В отличие от грубого git-filter-branch, BFG:

  • Сохраняет все коммиты, не изменяя их хеши (кроме тех, что действительно нужно изменить)
  • Не трогает текущий рабочий каталог
  • Работает с упакованными объектами Git (packfiles) напрямую

Почему BFG такой быстрый

Секрет скорости — в архитектурных решениях:

  1. Работа на JVM: Написано на Scala, что даёт доступ к эффективным структурам данных
  2. Прямой доступ к объектам: BFG обходит стандартные механизмы Git для более быстрой обработки
  3. Оптимизированные алгоритмы: Специально разработаны для типовых задач очистки

Реальные сценарии использования

Из практики:

  • Оптимизация CI/CD: Уменьшение размера репозитория ускорило сборки на 30%
  • Инциденты с данными: Быстрое удаление случайно закоммиченных учетных данных
  • Миграции: Подготовка репозиториев к переносу в новые системы

Под капотом

Технические детали:

  • Написан на Scala
  • Работает с Java 8 и выше
  • Лицензия: GPLv3

Стоит ли пробовать?

BFG Repo-Cleaner — must-have в арсенале:

✔ DevOps-инженеров ✔ Разработчиков, работающих с большими репозиториями ✔ Команд, где важна безопасность данных

Если вам хоть раз приходилось ждать завершения git-filter-branch несколько часов — попробуйте BFG. Разница почувствуется сразу.

Официальная документация | Репозиторий на GitHub

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.