git-cleanup

0

Описание

Утилита Python CLI для безопасного удаления старых веток Git — одновременно локальных и удалённых (например origin). Группирует по месяцам и предварительно показывает что удалить. Удалять ветки до указанного месяца включительно, удалять ветки старше N месяцев назад, глоб-маски для исключения веток, защищенные ветки.

Языки

  • Python100%
8 месяцев назад
8 месяцев назад
README.md

🧹 git-cleanup.py

Утилита Python CLI для безопасного удаления старых веток Git — одновременно локальных и удалённых (например origin). Теперь поддерживает: • указание пути к репозиторию (позиционный аргумент REPO); • исключение веток по глоб-маскам (--exclude r/,release).

📦 Установка

Требуется Python 3.8+ и установленный Git.

🚀 Быстрый старт

Отчёт (ничего не удаляется) для репо в текущем каталоге

Удалить всё до декабря-2024, игнорируя r/* и release*

Аргументы и флаги

ПараметрОбязательноПо умолчаниюОписание
REPOПуть к Git-репозиторию (. — текущий каталог)
--cutoff YYYY-MM✅*Удалять ветки до указанного месяца включительно
--months N✅*Удалять ветки, старше N месяцев назад
--deleteFalseВыполнить удаление (без него всегда dry-run)
--dry-runFalseНасильно включить пробный запуск — показать команды, не выполняя
--yesFalseНе спрашивать подтверждение перед удалением
--remote NAMEoriginКакой удалённый чистить
--protected LISTmain,developЧерез запятую — ветки, которые никогда не трогаем
--exclude MASKSГлоб-маски для исключения веток (можно повторять или через ,)
  • Нужно указать либо
    --cutoff
    , либо
    --months
    .

🏷 Маски --exclude

Маски понимают те же шаблоны, что оболочка Bash / fnmatch:

--exclude "r/" # исключить любые ветки r/… --exclude r/18. # исключить r/18.01, r/18.02 … --exclude "hotfix?,bug*" # несколько масок через запятую

Флаг можно повторять:

--exclude r/* --exclude release*

Сначала применяются --protected, затем --exclude.

🔐 Безопасность

• По умолчанию ничего не удаляется — пока не добавите --delete. • Любые ветки из --protected остаются нетронутыми. • Если не указан --yes, скрипт запрашивает подтверждение.

📑 Примеры

  1. Отчёт, какие ветки старше 12 месяцев
  1. Удаляем старые ветки, но НЕ трогаем r/* и любые release*
  1. Удаляем всё до 2024-12, кроме main, develop, release/**

📝 Лицензия

MIT — используйте свободно. Перед массовым удалением рекомендуется запускать --dry-run.