如何配置 Vercel 只部署特定的 Git 分支(例如 prod),而不是所有分支?
如何配置 Vercel 只部署特定的 Git 分支(例如 prod),而不是所有分支?
要实现Vercel仅部署指定分支(如prod)并禁用其他分支的自动部署,你可以通过两种官方推荐的方式配置,以下是详细步骤:
方法一:使用 Vercel 分支规则(推荐,可视化配置)
这是Vercel提供的原生可视化控制方式,能精确指定允许/禁止部署的分支:
- 打开你的Vercel项目,进入顶部导航的 Settings(设置)页面
- 在页面标签中切换到 Git 选项卡
- 向下滚动页面,找到 Branch Rules(分支规则)区域
- 点击 Add Rule(添加规则),按顺序创建两条规则:
- 第一条规则(允许prod分支部署):
- 在 Branch name pattern 输入框中填写
prod(精确匹配生产分支) - 在 Deployment Configuration 下拉菜单中选择 Deploy this branch(部署此分支)
- 可选:在 Environment 中指定部署为「Production」环境
- 在 Branch name pattern 输入框中填写
- 第二条规则(禁止所有其他分支部署):
- 在 Branch name pattern 输入框中填写
*(匹配所有未被前面规则覆盖的分支) - 在 Deployment Configuration 下拉菜单中选择 Do not deploy this branch(不部署此分支)
- 在 Branch name pattern 输入框中填写
- 第一条规则(允许prod分支部署):
- 点击 Save Rules 保存配置
配置完成后,只有prod分支的代码推送会触发部署,其他所有分支的推送都会被Vercel直接忽略。
方法二:使用忽略构建步骤(命令行逻辑控制)
如果你需要更灵活的条件判断(比如允许多个分支部署),可以通过Ignored Build Step配置命令行逻辑来跳过非目标分支的构建:
- 进入Vercel项目的 Settings > Git 页面
- 找到 Ignored Build Step(忽略构建步骤)输入框
- 输入以下命令:
if [ "$VERCEL_GIT_COMMIT_REF" != "prod" ]; then echo "Skipping deployment for non-prod branch: $VERCEL_GIT_COMMIT_REF"; exit 0; fi - 点击 Save 保存设置
命令逻辑说明:
VERCEL_GIT_COMMIT_REF是Vercel自动注入的环境变量,代表当前推送的Git分支名- 当分支不是
prod时,命令会输出提示并以exit 0正常退出,Vercel会识别此状态并跳过构建部署 - 如果是
prod分支,命令不会执行exit 0,Vercel会正常触发构建
为什么你之前的设置没有生效?
你之前配置的「生产环境跟踪prod分支」,只是指定哪个分支的部署会被标记为Vercel的生产环境,并不会改变Vercel默认对所有分支推送触发预览部署的行为。要禁用其他分支的部署,必须通过上述分支规则或忽略构建步骤来额外配置。
验证配置是否生效
- 推送代码到
main分支,打开Vercel项目的Deployments页面,应该看不到新的部署记录,或看到「Skipped」(已跳过)的状态 - 推送代码到
prod分支,确认Vercel正常触发构建并完成部署
更多细节可参考Vercel官方文档:Vercel Branch Rules




