繁体   English   中英

Git:删除所有具有特定模式的远程分支

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM