[英]Git: delete all remote branches with a certain pattern
我想执行一个命令来删除远程上遵循特定模式的分支。
示例用例:
删除origin
上以v1/
开头的所有分支。
如果可能的话,最好通过安全检查来增强此命令:仅删除已合并到master
中的分支。
列出这样的分支:
git for-each-ref --merged master \
--format="%(refname:short)" refs/remotes/origin/v1
# if you want only the `v1/xxx` part without the leading `origin/` :
git for-each-ref --merged master \
--format="%(refname:lstrip=3)" refs/remotes/origin/v1
然后,您可以将其 output 提供给git push origin -d
:
git for-each-ref --merged master \
--format="%(refname:lstrip=3)" refs/remotes/origin/v1 |\
xargs git push origin -d
注意:使用git for-each-ref
的语法比git branch
的语法要复杂一些,但它的 output 是稳定的,非常适合使用--format
选项进行配置。 git branch
旨在供人类阅读,并具有多种格式选项,这些选项会导致脚本中出现烦人的错误(活动分支上的前导*
,不可配置的特定间距...)
作为参考,使用git branch
的等效命令将是:
git branch --merged master -r --list origin/v1
origin
上以v1/
开头的所有分支git branch --remotes --merged master --list 'origin/v1/*' --format '%(refname:lstrip=3)'
origin
上以v1/
开头的所有分支git branch --remotes --merged master --list 'origin/v1/*' --format '%(refname:lstrip=3)' |
xargs git push --delete origin
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.