我想执行一个命令来删除遥控器上遵循特定模式的分支。
示例用例:删除以 开头的
所有分支。originv1/
如果可能的话,最好通过安全检查来增强此命令:仅删除已合并到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
Run Code Online (Sandbox Code Playgroud)
然后您可以将其输出提供给git push origin -d:
git for-each-ref --merged master \
--format="%(refname:lstrip=3)" refs/remotes/origin/v1 |\
xargs git push origin -d
Run Code Online (Sandbox Code Playgroud)
注意:使用的语法git for-each-ref比 for 稍微复杂一点git branch,但其输出稳定,可通过--format选项进行高度配置,并且适合脚本编写。git branch旨在供人类阅读,并且有几个格式选项,这些选项会在脚本中产生恼人的错误(*在活动分支上引导,不可配置的特定间距......)
作为参考,使用的等效命令git branch是:
git branch --merged master -r --list origin/v1
Run Code Online (Sandbox Code Playgroud)