Страницы

Поиск по вопросам

среда, 12 февраля 2020 г.

Как одновременно удалить несколько локальных бранчей в git

#git


Подскажите, как грохнуть одновременно все локальные бранчи с префиксом prj_name_

$ git branch
  ...
* prj_name
  prj_name_camera
  prj_name_defs
  ...


Пробую

v.malov$ git branch -D prj_name_*
error: branch 'prj_name_*' not found.

    


Ответы

Ответ 1



где то так for b in $(git branch | egrep "^prj_name_"); do git branch -D $b; done только перед началом проверьте список бранчей на удаление git branch | egrep "^prj_name_" и если что, скорректируйте регулярку.

Ответ 2



Прежде всего, нужно переключиться на какую-то ветку, которую вы не будете удалять. Git не позволит удалить выбранную в данный момент ветку. Подумайте, хотите ли вы удалять ветки, которые никуда не замержили? Так можно потерять несохранённые изменения. Если не хотите, то переключитесь на ту ветку, в которую должны быть замержены результаты и используйте --merged: git checkout prj_name git branch --merged | egrep "^\s*prj_name_" Это список веток, которые будут удалены. В регулярке ^\s* обозначает начало строки и сколько-то пробельных символов. Начало строки отсеивает все случаи, где prj_name - не префикс, а середина строки. \s*необходимо, т.к. команда git branch выводит два пробела перед названиями всех веток кроме текущей (перед ней будет *<пробел>) Если результат проверки верный, можно удалять. git branch --merged | egrep "^\s*prj_name_" | xargs git branch -d Если вы хотите удалить в том числе незамерженные ветки, то: git branch | egrep "^\s*prj_name_" | xargs git branch -D

Комментариев нет:

Отправить комментарий