我想清理我的本地存储库,它有大量的旧分支:例如3.2、3.2.1、3.2.2等。

我希望有个鬼鬼祟祟的办法能一次性把他们干掉。因为它们大多遵循点释放约定,我想也许有一个捷径可以说:

git branch -D 3.2.*

并杀死所有3.2。x分支。

我尝试了这个命令,当然,它不起作用。


当前回答

对于使用PowerShell的纯灵魂,这里有一个小脚本 Git branch -d $(Git branch——list '3.2.;*' | %{$_.Trim()})

其他回答

如果您已经安装了Git GUI(这是Windows的默认附加组件),那么它是最简单的。可以使用“ctrl”键选择多个分支,一键删除。

也许你会发现这很有用:

如果你想删除所有不是'master', 'foo'和'bar'的分支

git branch -D `git branch | grep -vE 'master|foo|bar'`

Grep -v 'something'是一个带有反转的匹配器。

如果你正在使用Fish shell,你可以利用字符串函数:

git branch -d (git branch -l "<your pattern>" | string trim)

这与其他一些答案中的Powershell选项没有太大区别。

这里有一个一般的解决方案:

git branch | grep "<pattern>" | xargs git branch -D

我建议在执行上述命令之前运行以下命令行,预览将要删除的分支。

git branch | grep "<pattern>"

在这种情况下

git branch | grep "^3\.2\..*" | xargs git branch -D

你可以使用这个命令:git branch -D $(printf "%s\n" $(git branch) | grep '3.2')