Как удалить ветки в git, начиная с буквы "o"?
Предположим, у меня есть список ветвей вроде следующего:
origin_alpha
origin_beta
origin_gamma
alpha
beta
gamma
Я не хочу удалять ветки origin_alpha, origin_betastrong > и origin_gamma.
Как удалить ветки в git, начиная с буквы "o"?
Предположим, у меня есть список ветвей вроде следующего:
origin_alpha
origin_beta
origin_gamma
alpha
beta
gamma
Я не хочу удалять ветки origin_alpha, origin_betastrong > и origin_gamma.
Обновление: опция -r
для xargs
является дополнением GNU. Если вы не используете xargs
из GNU findutils, это может не сработать. Вы можете опустить его, но это приведет к ошибке, если входные данные для xargs пустые.
Вы можете использовать git branch --list <pattern>
и направить его вывод в xargs git branch -d
:
git branch --list 'o*' | xargs -r git branch -d
Кстати, в приведенном выше коде есть небольшая проблема. Если вы в настоящее время извлекли одну из веток, которая начинается с o
, вывод git branch --list 'o*'
будет выглядеть следующим образом:
* origin_master
origin_test
o_what_a_branch
Обратите внимание на звездочку *
перед именем текущей ветки.
Хотя вы не можете удалить текущую ветку в любом случае, это приводит к тому, что xargs также передает *
в git branch delete
.
Как я уже сказал, это просто косметическая ошибка, но если вы хотите избежать этого, используйте:
git branch --list 'o*' | sed 's/^* //' | xargs -r git branch -d
Другой способ может быть таким:
git branch -d $(git branch | grep yourSearchPattern)
мне кажется более интуитивным, потому что grep - это то, чем я пользуюсь каждый день.
Вы также можете сделать его псевдоним (или любое другое решение, предложенное здесь), проверьте здесь, например, как передать аргументы псевдониму: http://www.cyberciti.biz/faq/linux-unix-pass-argument-to-alias-command/
PS В вашем конкретном случае yourSearchPattern может быть источником:
git branch -d $(git branch | grep origin)
PPS в качестве следующего шага, также было бы неплохо сделать процесс удаления более подробным, например, было бы неплохо, чтобы вы подтвердили удаление для каждой ветки. Но я думаю, что это решает вопрос...
Поздно на вечеринку, но другой способ сделать это -
git branch -d 'git branch | grep substring'
и для текущего вопроса
git branch -d 'git branch | grep origin'
Это удалит все ветки, имена которых содержат происхождение.