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

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

git branch -D 3.2.*

并杀死所有3.2。x分支。

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


当前回答

如果你在windows上,你可以使用powershell来做这个:

 git branch | grep 'feature/*' |% { git branch -D $_.trim() }

用你喜欢的图案替换feature/*。

其他回答

嗯,在最坏的情况下,你可以用:

git branch | grep '3\.2' | xargs git branch -D
git branch  | cut -c3- | egrep "^3.2" | xargs git branch -D
  ^                ^                ^         ^ 
  |                |                |         |--- create arguments
  |                |                |              from standard input
  |                |                |
  |                |                |---your regexp 
  |                |
  |                |--- skip asterisk 
  |--- list all 
       local
       branches

编辑:

一个更安全的版本(由Jakub narabbski和Jefromi建议),因为git分支输出并不用于脚本:

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

... 或者xargs-free:

git branch -D `git for-each-ref --format="%(refname:short)" refs/heads/3.2\*`

如果你要在一个文本文件(branches-to-del.txt)中删除所有的分支(每行一个分支),那么你可以这样做,从远程(origin)中删除所有这样的分支: Xargs -一个分支到del.txt git推送-删除原点

我把我的首字母和破折号(at-)作为分支名称的前三个字符,原因如下:

git branch -D `git branch --list 'at-*'`

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

Git分支-d $

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

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