我有一个团队成员,他无意中将150多个本地分支机构推到了我们的中央回收站。谢天谢地,它们都有相同的前缀。使用这个前缀,有没有一个git命令或很酷的小shell脚本可以一次删除所有这些内容?
发布于 2012-05-12 00:36:24
使用以下命令删除远程服务器上所有带有PREFIX
前缀的分支。
git branch -r | awk -F/ '/\/PREFIX/{print $2}' | xargs -I {} git push origin :{}
您可能需要先进行一次演练,看看是否需要删除分支:
git branch -r | awk -F/ '/\/PREFIX/{print $2}'
发布于 2015-06-03 19:51:44
grep也是如此:git branch -r | grep -Eo 'PREFIX/.*' | xargs -i git push origin :{}
。
branch -r
显示origin/prefix/branchname
。因此,这将需要prefix/branchname
。
发布于 2014-01-30 23:00:58
Neevek的解决方案是优雅的,但它可以更好:建议的解决方案称为每个分支一次'git push‘,这意味着要删除每个分支的额外网络往返。既然您使用的是awk,为什么不使用它作为':‘的前缀,这样xargs就可以只调用'git push’一次,并一次性删除所有分支:
演练以列出要删除的分支:
git branch -r | awk -F/ '/\/PREFIX/{print ":" $2}'
实际推送删除的最终解决方案:
git branch -r | awk -F/ '/\/PREFIX/{print ":" $2}' | xargs git push origin
https://stackoverflow.com/questions/10555136
复制相似问题