Автоматизировал чистку Git-веток: был 1 час — стало 5 минут

Обновлено:

Каждую неделю вручную убирать слитые ветки — занятие скучное и отнимающее время. Переключиться на develop, подтянуть изменения, перебрать список веток, проверить, что уже влито, удалить по одной… На это уходил час. Решил автоматизировать.

Что умеет скрипт

  • Находит все удалённые ветки, которые уже влиты в develop
  • Защищает критические ветки (main, master, release/*)
  • Спрашивает подтверждение перед удалением
  • Сохраняет логи до и после очистки

Запуск

Одна команда:

node git_cleanup_branches.js

Скрипт лежит в репозитории: cli/git_cleanup_branches/git_cleanup_branches.js

Параметры

Параметры передаются в формате ключ=значение:

  • targetBranch — целевая ветка (по умолчанию develop)
  • step — этап: full (полный цикл) или delete (только удаление из файла)

Примеры

Полный процесс для ветки develop:

node git_cleanup_branches.js

Проверка веток, влитых в master:

node git_cleanup_branches.js targetBranch=master

Только удаление (если процесс прервался после подтверждения):

node git_cleanup_branches.js step=delete

Как это работает

  1. Скрипт переключается на целевую ветку и выполняет git fetch --all
  2. Собирает список удалённых веток и тех, что уже влиты в целевую
  3. Отфильтровывает защищённые ветки
  4. Сохраняет кандидатов в branches-for-delete.txt и запрашивает подтверждение (y/n)
  5. После подтверждения удаляет ветки через git push origin --delete
  6. Сохраняет финальный список в branches-after.txt

Генерируемые файлы

  • branches-before.txt — снимок веток до удаления
  • branches-for-delete.txt — кандидаты на удаление
  • branches-after.txt — снимок после удаления

Планы по доработке

  • Прогресс-бар при массовом удалении
  • Режим «сухой запуск» (dryRun=true) для тестирования
  • Проверка существования целевой ветки
  • Поддержка регулярок для защиты веток (например, feature/*)
Roadmap на GitHub

А вы как чистите ветки — вручную, через IDE или своим скриптом?