如何删除git中以字母'o'开头的分支?假设,我有一个分支列表如下:
origin_alpha origin_beta origin_gamma alpha beta gamma
我不想删除分支origin_alpha、origin_beta和origin_gamma。
g52tjvyc1#
更新:xargs的-r选项是一个GNU插件。除非你使用GNU findutils中的xargs,否则它可能不起作用。你可以忽略它,但是如果xargs的输入为空,这会导致错误。可以使用git branch --list <pattern>并将其输出通过管道传输到xargs git branch -d:
xargs
-r
git branch --list <pattern>
xargs git branch -d
git branch --list 'o*' | xargs -r git branch -d
顺便说一句,上面的代码有一个小问题,如果你当前 checkout 了一个以o开头的分支,git branch --list 'o*'的输出将如下所示:
o
git branch --list 'o*'
* origin_master origin_test o_what_a_branch
注意当前分支名称前面的星号*。尽管无论如何都不能删除当前分支,但这会导致xargs也将*传递给git branch delete。正如我所说,这只是一个化妆品错误,但如果你想避免它用途:
*
git branch delete
git branch --list 'o*' | sed 's/^* //' | xargs -r git branch -d
tkclm6bt2#
另一种方式可能是这样的:
git branch -d $(git branch | grep yourSearchPattern)
对我来说看起来更直观,因为grep是我每天使用的东西。你也可以为它创建一个别名(或者这里建议的任何解决方案),例如这里检查如何将参数传递给别名:http://www.cyberciti.biz/faq/linux-unix-pass-argument-to-alias-command/PS在您的特定情况下,您的搜索模式可以是来源:
git branch -d $(git branch | grep origin)
PPS作为下一步,也将是很好的,使删除过程更冗长,例如将是很好的,你必须确认删除每个分支。但我认为这克服了问题...
uajslkp63#
git branch -D $(git branch --list 'regex_here')示例:git branch -D $(git branch --list 'aputhen/*')删除名称以aputhen/开头的所有分支。
git branch -D $(git branch --list 'regex_here')
git branch -D $(git branch --list 'aputhen/*')
aputhen/
xt0899hw4#
添加我在PowerShell(Windows)中使用的脚本Foreach ($branch in (git branch --list | findstr user)) { git branch -D $branch.trim() }
Foreach ($branch in (git branch --list | findstr user)) { git branch -D $branch.trim() }
j7dteeu85#
派对迟到了但另一种方法是
git branch -d `git branch | grep substring`
对于当前问题
git branch -d `git branch | grep origin`
这将删除名称中包含原点的所有分支。
5条答案
按热度按时间g52tjvyc1#
更新:
xargs
的-r
选项是一个GNU插件。除非你使用GNU findutils中的xargs
,否则它可能不起作用。你可以忽略它,但是如果xargs的输入为空,这会导致错误。可以使用
git branch --list <pattern>
并将其输出通过管道传输到xargs git branch -d
:顺便说一句,上面的代码有一个小问题,如果你当前 checkout 了一个以
o
开头的分支,git branch --list 'o*'
的输出将如下所示:注意当前分支名称前面的星号
*
。尽管无论如何都不能删除当前分支,但这会导致xargs也将
*
传递给git branch delete
。正如我所说,这只是一个化妆品错误,但如果你想避免它用途:
tkclm6bt2#
另一种方式可能是这样的:
对我来说看起来更直观,因为grep是我每天使用的东西。
你也可以为它创建一个别名(或者这里建议的任何解决方案),例如这里检查如何将参数传递给别名:http://www.cyberciti.biz/faq/linux-unix-pass-argument-to-alias-command/
PS在您的特定情况下,您的搜索模式可以是来源:
PPS作为下一步,也将是很好的,使删除过程更冗长,例如将是很好的,你必须确认删除每个分支。但我认为这克服了问题...
uajslkp63#
git branch -D $(git branch --list 'regex_here')
示例:
git branch -D $(git branch --list 'aputhen/*')
删除名称以
aputhen/
开头的所有分支。xt0899hw4#
添加我在PowerShell(Windows)中使用的脚本
Foreach ($branch in (git branch --list | findstr user)) { git branch -D $branch.trim() }
j7dteeu85#
派对迟到了但另一种方法是
对于当前问题
这将删除名称中包含原点的所有分支。