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

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

git branch -D 3.2.*

并杀死所有3.2。x分支。

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


当前回答

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

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

其他回答

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

Use

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

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

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

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

因为在Git中,所有的分支都没有引用到Git repo,为什么不删除指向. Git /ref的分支,然后如果有任何在存储库中不感兴趣的东西被遗漏了,就会自动被垃圾收集,所以你不需要麻烦。

我今天刚刚清理了一大批过时的本地/远程分支机构。

以下是我的做法:

1. 列出所有分支名称到一个文本文件:

git branch -a >> BranchNames.txt

2. 附加我想删除的分支到命令"git branch -D -r":

git branch -D -r origin/dirA/branch01 origin/dirB/branch02 origin/dirC/branch03(…附加任何分支名称)

3.执行CMD命令

这一个比“git push origin -delete”工作得更快更可靠。

这可能不是其他答案中列出的最聪明的方法,但这个方法非常直接,而且易于使用。