如何删除除 development 和 main 之外的分支

How to remove branches except for development and main

目标 删除除少数例外的所有分支。在我的例子中:development, main

我找到了这个命令,但它只适用于 main。

git branch | grep -v "main" | xargs git branch -D

我以为你可以这样做:

git branch | grep -v "main|development" | xargs git branch -D

但这不起作用。

基本正则表达式要求您对 | 进行转义,否则该 | 将被视为文字字符,以表示交替。

git branch | grep -v "main\|development"

如果你的grep版本支持,你可以使用扩展正则表达式,其中|是交替运算符

git branch | grep -Ev "main|development"

在你的模式中逃离管道 \|。像那样:

git branch | grep -v "branchName1\|branchName2\|branchName3" | xargs git branch -D

git branch | grep -v -E "branchName1|branchName2|branchName3" | xargs git branch -D

参数简述

-v or --invert-match -v 参数 returns 所有 non-matching 行,这很重要,因为要删除它们。

-E or --extended-regexp 表示您传递的模式是用于搜索的扩展正则表达式。然后就可以不用转义就用管道分开了