我想清理我的本地存储库,它有大量的旧分支:例如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分支。
我尝试了这个命令,当然,它不起作用。
当前回答
如果你要在一个文本文件(branches-to-del.txt)中删除所有的分支(每行一个分支),那么你可以这样做,从远程(origin)中删除所有这样的分支: Xargs -一个分支到del.txt git推送-删除原点
其他回答
你可能会喜欢这个小物件…在最终删除所有选择之前,它会拉出列表并要求确认每个项目……
git branch -d `git for-each-ref --format="%(refname:short)" refs/heads/\* | while read -r line; do read -p "remove branch: $line (y/N)?" answer </dev/tty; case "$answer" in y|Y) echo "$line";; esac; done`
使用-D强制删除(像往常一样)。
为了可读性,这里是逐行分解的…
git branch -d `git for-each-ref --format="%(refname:short)" refs/heads/\* |
while read -r line; do
read -p "remove branch: $line (y/N)?" answer </dev/tty;
case "$answer" in y|Y) echo "$line";;
esac;
done`
下面是xargs方法……
git for-each-ref --format="%(refname:short)" refs/heads/\* |
while read -r line; do
read -p "remove branch: $line (y/N)?" answer </dev/tty;
case "$answer" in
y|Y) echo "$line";;
esac;
done | xargs git branch -D
最后,我喜欢把它放在。bashrc中
alias gitselect='git for-each-ref --format="%(refname:short)" refs/heads/\* | while read -r line; do read -p "select branch: $line (y/N)?" answer </dev/tty; case "$answer" in y|Y) echo "$line";; esac; done'
这样我就可以说
gitSelect | xargs git branch -D.
这里有一个一般的解决方案:
git branch | grep "<pattern>" | xargs git branch -D
我建议在执行上述命令之前运行以下命令行,预览将要删除的分支。
git branch | grep "<pattern>"
在这种情况下
git branch | grep "^3\.2\..*" | xargs git branch -D
要根据指定的模式删除多个分支,请执行以下操作:
打开终端或同等工具,输入以下命令:
git branch | grep "<pattern>" (preview of the branches based on pattern)
git branch | grep "<pattern>" | xargs git branch -D (replace the <pattern> with a regular expression to match your branch names)
删除所有3.2。X个分支,你需要输入
git branch | grep "3.2" | xargs git branch -D
这是所有!
你可以开始了!
你可以使用这个命令:git branch -D $(printf "%s\n" $(git branch) | grep '3.2')
你可以使用git branch——list列出符合条件的分支,并使用git branch -D/ -D删除符合条件的分支。
一个程序示例:
git branch -d `git branch --list '3.2.*'`