如何从字母“o”开始删除git中的分支?
假设我有以下分支列表:
origin_alpha
origin_beta
origin_gamma
alpha
beta
gamma
我不想删除分支 origin_alpha , origin_beta 和 origin_gamma 。
答案 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() }