Github Actions分支匹配异常:**/ci-*触发非预期分支
GitHub Workflow分支匹配触发问题解析
这不是Bug,是你对GitHub的glob分支匹配规则理解有误。
核心匹配规则说明
GitHub Workflow使用glob模式匹配分支名,关键规则:
*:匹配任意非/的字符序列(仅匹配单个路径段内的内容)**:匹配任意字符序列(包括/),可跨多个路径段匹配
你的模式 **/ci-* 的实际作用
你预期该模式仅匹配包含 /ci- 子串的分支,但实际上它会匹配**所有分支名中包含 ci- 子串,且 ci- 前存在任意字符(包括 /)**的分支。
原因是 ** 会匹配 ci- 之前的所有字符(包括 /),模式中的 / 被 ** 覆盖匹配,后续的 ci-* 直接匹配分支名里的 ci- 及后续内容,导致你的分支 mjd/try-claude-in-ci-20251216 因为包含 ci- 子串而被触发。
实现预期需求的正确模式
如果你想要仅匹配**ci- 紧跟在 / 之后**的分支(即分支名包含 /ci- 子串),需要使用精确匹配模式:
on: push: branches: ['*/ci-*', '**/*/ci-*']
这个模式会匹配如 feature/ci-fix、bugfix/urgent/ci-update 这类分支,而不会匹配 mjd/try-claude-in-ci-20251216 这类 ci- 不在 / 之后的分支。
内容的提问来源于stack exchange,提问作者Mark Dominus
相关产品推荐
相关产品推荐

