在git中删除多个远程分支

155

我有一个团队成员无意中将他的 150 个本地分支推送到我们的中央仓库。幸运的是,它们都有相同的前缀。使用该前缀,是否有一种 git 命令或酷炫的小型 shell 脚本可以一次性删除所有这些分支?

22个回答

0

我尝试删除所有的origin/release/r1-1*远程分支,下面的命令行很好地工作了。

git branch -r | awk -Forigin/ '/\/*r1-1/ {print $2}' |  xargs -I {} git push origin :{}

0

在多个远程仓库的情况下,我们可以找到一些前缀组合的好解决方案。 如果您有许多(比如数百个)分支是自动创建的,例如这种模式:build/XXXX。此外,还有upstream远程和派生的origin,因此branch -r也会返回origin/build/XXXXupstream/build/XXXX

您可以使用命令cut -f2- -d/的解决方案。更多信息:https://unix.stackexchange.com/a/354984

干运行时,可以将安全正则表达式模式组合起来,例如:33[1-3][0-9][0-9]{4}

git branch -r | grep -Eo "upstream/build/33[0-9][0-9]" | cut -f2- -d/ | xargs -I {} echo {}

与从上游进行真正的删除相同:

git branch -r | grep -Eo "upstream/build/33[0-9][0-9]" | cut -f2- -d/ | xargs -I {} git push upstream --delete {}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接