Удалить несколько веток за один прогон - PullRequest
1 голос
/ 19 июня 2019

Я вижу статью Удаление веток в Bitbucket , но это просто удаление одной ветви за раз.Я хочу удалить несколько веток за один проход, это возможно из командной строки или вручную?

1 Ответ

4 голосов
/ 19 июня 2019

Шаг 1, местные филиалы

Как предложил Флимзи, branch -d принимает серию ссылок.

Кроме того, при необходимости, возможно, следует рассмотреть возможность использования первой команды для создания списка ветвлений и передачи результата в команду ветвления. Например, если вы решили удалить объединенные ветви

git branch -d `git branch --merged`

или, в другой гипотетической ситуации, если вы хотите избавиться от всех веток с плохим коммитом (внесена ошибка)

git branch -d `git branch --contains <bad-commit>`

Во втором примере git может жаловаться, что некоторые ветви не полностью слиты, то есть имеют коммиты, которые присутствуют только на них, недоступные из других ветвей. Это защита от случайной потери работы, прямо в принципах git.

Чтобы переопределить этот механизм в тех случаях, когда вы делаете знаете, что эти ветви не полностью объединены, но вы все еще хотите их удалить, альтернативой является использование флага -D вместо -d, но будьте осторожны, если вы используете это в сочетании со списком, как мы видели выше, или обязательно для вывода и проверки списка до подачи его в команду удаления.


Шаг 2, удаленные филиалы

И чтобы ответить на полезный комментарий Влада, да, эта операция влияет только на локальное репо, поэтому, чтобы отразить его на удаленном сервере (я здесь приму origin, но адаптирую его к вашему случаю), вам нужно будет

git push -d origin <branchList>

Шаг 3, удаленное отслеживание ветвей

Наконец, поскольку ваше локальное хранилище еще на этом этапе сохраняет устаревшие ветви удаленного отслеживания, соответствующие удаленным ветвям, которые мы только что удалили, закончите с

git remote prune origin
...