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

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

git branch -D 3.2.*

并杀死所有3.2。x分支。

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


当前回答

保持“开发”,并删除所有其他在本地

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

其他回答

我的具体情况没有解决,所以我重新回答…

场景:

新克隆的回购 未创建本地分支 许多远程分支(在我的例子中超过100个) 我想从远程删除所有的特征分支,feature/myfeature

这是我在工作中得到的命令:

git branch  -a | cut -c3- | grep 'origin\/feature' | sed 's/remotes\/origin\///' | xargs git push origin --delete

感谢@gwai让我走上正轨。

Use

git for-each-ref --format='%(refname:short)' 'refs/heads/3.2.*' |
   xargs git branch -D

也许你会发现这很有用:

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

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

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

如果你真的需要清理所有的树枝,那就试试

Git分支-d $

它将删除所有本地合并分支,除了您当前签入的分支。

这是一个让你的地方变得干净的好方法

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