Найти в Дзене

Выкидываем старьё из git. Как удалить все ветки, которые уже слили в мастер

Иногда, при работе над проектом, случается так, что приходится создавать большое количество веток (branches) в системе контроля версий git. Время от времени хочется удалить из репозитория ненужные ветки, но ситуация усложняется тем, что так с ходу и не поймёшь, какие из веток уже были слиты в основную (master или main) и их можно безболезненно удалить, а какие нет и их хотелось бы пока не трогать. Этот короткий однострочный скрипт делает то, что нужно: получает список слитых в мастер веток и удаляет их. Внимание! Перед выполнением этого скрипта необходимо переключиться в основную ветку, например при помощи команды git checkout master. А теперь, собственно, сам скрипт: git branch --merged | grep -v '^*' | xargs git branch -d Готово! #git #программирование #системы контроля версий #github #gitlab #script #скрипты #shell #bash
Photo by Jan van der Wolf from Pexels: https://www.pexels.com/photo/travel-outdoors-recycling-pollution-10368942/
Photo by Jan van der Wolf from Pexels: https://www.pexels.com/photo/travel-outdoors-recycling-pollution-10368942/

Иногда, при работе над проектом, случается так, что приходится создавать большое количество веток (branches) в системе контроля версий git. Время от времени хочется удалить из репозитория ненужные ветки, но ситуация усложняется тем, что так с ходу и не поймёшь, какие из веток уже были слиты в основную (master или main) и их можно безболезненно удалить, а какие нет и их хотелось бы пока не трогать.

Этот короткий однострочный скрипт делает то, что нужно: получает список слитых в мастер веток и удаляет их.

Внимание! Перед выполнением этого скрипта необходимо переключиться в основную ветку, например при помощи команды git checkout master.

А теперь, собственно, сам скрипт:

git branch --merged | grep -v '^*' | xargs git branch -d

  • git branch --merged показывает все ветки, слитые в текущую ветку
  • grep -v '^*' фильтрует строку с текущей веткой. Буквально «покажи все строки, которые не начинаются с символа *» (звёздочкой git отмечает текущую ветку в выводе git branch)
  • xargs git branch -d преобразует предыдущий вывод в аргументы командной строки и передаёт из команде на удаление веток (git branch -d)

Готово!

#git #программирование #системы контроля версий #github #gitlab #script #скрипты #shell #bash