Обновлено:
Каждую неделю вручную убирать слитые ветки — занятие скучное и отнимающее время. Переключиться на 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
Как это работает
- Скрипт переключается на целевую ветку и выполняет
git fetch --all - Собирает список удалённых веток и тех, что уже влиты в целевую
- Отфильтровывает защищённые ветки
- Сохраняет кандидатов в
branches-for-delete.txtи запрашивает подтверждение (y/n) - После подтверждения удаляет ветки через
git push origin --delete - Сохраняет финальный список в
branches-after.txt
Генерируемые файлы
branches-before.txt— снимок веток до удаленияbranches-for-delete.txt— кандидаты на удалениеbranches-after.txt— снимок после удаления
Планы по доработке
- Прогресс-бар при массовом удалении
- Режим «сухой запуск» (
dryRun=true) для тестирования - Проверка существования целевой ветки
- Поддержка регулярок для защиты веток (например,
feature/*)
А вы как чистите ветки — вручную, через IDE или своим скриптом?