demo/GLOB.md
2026-07-22 16:34:40 +08:00

2.9 KiB

Glob 模式语法说明(分支过滤 / 名称匹配)

Source Git(及常见 Git 托管)里,「分支过滤」「分支保护名称」等字段使用 glob 模式匹配。本文提炼常用写法,方便在 Web 钩子等场景直接查阅。


一句话

用通配符描述「匹配哪些名字」:留空或只写 * / ** 表示全部;写具体规则则只匹配命中的分支(或路径)。


Web 钩子:分支过滤

适用于:推送、创建分支、删除分支 等带 Git 引用的事件。

填写内容 效果
空,或 *,或 ** 所有分支相关事件都会投递
main 仅 main
release* release、release-1、release/v2 等(* 不跨 / 时依实现;本库 * 不匹配分隔符,见下)
{main,develop} main 或 develop
{main,release/*} main,或 release/ 下一级名称
refs/tags/v* 也可写完整 ref(标签等)

说明: 工单、合并请求评论等不带分支 ref 的事件,一般会忽略分支过滤,仍按你勾选的事件类型投递。


常用符号

符号 含义 例子 能匹配 不能匹配
* 一段字符(不含路径分隔符 /) release* release、release-1 跨多级目录时需配合 **
** 任意字符(可跨分隔符) api.**.com(若以 . 为分隔) 多层 —
? 单个非分隔符字符 ?at cat、fat at
[abc] 字符集合之一 [abc]at cat、bat fat
[!abc] 不在集合中的字符 [!abc]at fat cat
[a-c] 字符范围 [a-c]at cat、bat fat
{a,b,c} 多选一(逗号分隔,无空格) {main,develop} main 或 develop master
\ 转义后面的特殊字符 字面量 * 时需要转义 — —

推荐示例(钩子分支过滤)

main

只监听 main。

{main,develop,release/*}

监听 main、develop,以及 release/ 下的分支(如 release/v1)。

feature/*

只监听 feature/ 下一层分支名。

*

所有分支(与留空类似,按产品实现为准;Source Git 钩子说明:空或 * 表示全部)。


分支保护等场景的补充例子

这些字段同样用 glob,可写路径风格:

main
release/**
.drone.yml
/docs/**/*.txt

多个文件模式时,有的界面用分号 ; 分隔,请以该字段旁的说明为准。


注意

  1. {a, b} 里不要随便加空格;应写成 {a,b}。
  2. 需要匹配字面量 *、?、{ 等时,用 \ 转义。
  3. 本文面向产品使用;常用写法见上文表格与示例即可。

相关