删除名称与特定模式匹配的git分支

时间:2015-11-10 13:37:57

标签: git github

如何从字母“o”开始删除git中的分支?

假设我有以下分支列表:

origin_alpha
origin_beta
origin_gamma
alpha
beta
gamma

我不想删除分支 origin_alpha origin_beta origin_gamma

5 个答案:

答案 0 :(得分:37)

更新:-r的{​​{1}}选项是GNU插件。除非你使用GNU findutils中的xargs,否则它可能无效。您可以省略它,但如果输入到xargs的输入为空,则会导致错误。

您可以使用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

答案 1 :(得分:10)

另一种方式可能是这样的:

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作为下一步,也很好,使删除过程更加冗长,例如,你必须确认每个分支的删除是很好的。但我认为这克服了这个问题......

答案 2 :(得分:1)

迟到聚会,但另一种方式是

git branch -d `git branch | grep substring`

以及当前问题

git branch -d `git branch | grep origin`

这将删除名称中包含起源的所有分支。

答案 3 :(得分:1)

git branch -D $(git branch --list 'regex_here')
示例:\
git branch -D $(git branch --list 'aputhen/*')
删除名称以aputhen/开头的所有分支。

答案 4 :(得分:0)

添加我在PowerShell(Windows)中使用的脚本

Foreach ($branch in (git branch --list | findstr user)) { git branch -D $branch.trim() }