我想清理我的本地存储库,它有大量的旧分支:例如3.2、3.2.1、3.2.2等。
我希望有个鬼鬼祟祟的办法能一次性把他们干掉。因为它们大多遵循点释放约定,我想也许有一个捷径可以说:
git branch -D 3.2.*
并杀死所有3.2。x分支。
我尝试了这个命令,当然,它不起作用。
我想清理我的本地存储库,它有大量的旧分支:例如3.2、3.2.1、3.2.2等。
我希望有个鬼鬼祟祟的办法能一次性把他们干掉。因为它们大多遵循点释放约定,我想也许有一个捷径可以说:
git branch -D 3.2.*
并杀死所有3.2。x分支。
我尝试了这个命令,当然,它不起作用。
当前回答
如果你不局限于使用git命令提示符,那么你总是可以运行git gui并使用Branch->Delete菜单项。选择所有你想删除的分支,让它撕裂。
其他回答
不是那种语法。但你可以这样做:
git branch -D 3.2 3.2.1 3.2.2
基本上,git分支会通过一次调用为你删除多个分支。不幸的是,它不做分支名称补全。不过,在bash中,你可以这样做:
git branch -D `git branch | grep -E '^3\.2\..*'`
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\*`
我今天刚刚清理了一大批过时的本地/远程分支机构。
以下是我的做法:
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”工作得更快更可靠。
这可能不是其他答案中列出的最聪明的方法,但这个方法非常直接,而且易于使用。
我把我的首字母和破折号(at-)作为分支名称的前三个字符,原因如下:
git branch -D `git branch --list 'at-*'`
如果你真的需要清理所有的树枝,那就试试
Git分支-d $
它将删除所有本地合并分支,除了您当前签入的分支。
这是一个让你的地方变得干净的好方法