GitHub Actions部署时怎么指定分支?

宇文佼佼 阅读 45

我用 GitHub Actions 自动部署静态网站,但每次 push 到 main 分支都会触发部署,我想改成只在 deploy 分支推送时才部署。改了 workflow 文件里的 on: push: branches: [deploy] 还是没生效,是不是写法不对?

下面是我的完整配置:

name: Deploy to GitHub Pages

on:
  push:
    branches: [deploy]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Setup Node
        uses: actions/setup-node@v3
        with:
          node-version: 18
      - run: npm install && npm run build
      - name: Deploy
        uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./dist
我来解答 赞 11 收藏
二维码
手机扫码查看
2 条解答
打工人文雯
啊这个问题我遇到过,其实你的写法基本是对的,但有时候GitHub Actions的缓存或者分支保护设置会导致配置不生效。我来帮你一步步排查和解决。

第一步,先确认你的workflow文件路径和名称是否正确。文件应该放在.github/workflows/目录下,比如可以叫deploy.yml。有时候放错位置会导致GitHub识别不到。

第二步,检查你的分支名称是不是真的叫deploy,有时候容易手误拼错。可以用这个命令在本地确认:
git branch


第三步,你的语法其实没问题,但为了保险可以试试更明确的写法:
on:
push:
branches:
- deploy


有时候yaml的数组写法会因为缩进问题出bug,用这种更清晰。

第四步,如果还是不生效,可能是GitHub的缓存问题。你可以:
1. 手动触发一次workflow看看(在Actions页面点Run workflow)
2. 或者改个文件名强制刷新,比如从deploy.yml改成deploy-site.yml

第五步,最坏的情况是分支保护设置阻止了workflow运行。去仓库的Settings -> Branches,确认deploy分支没有设置保护规则阻止Actions运行。

最后给你个完整的参考配置,我加了点注释说明关键点:
name: Deploy to GitHub Pages

# 这里确保只有deploy分支的push会触发
on:
push:
branches: [ deploy ] # 注意这里是数组写法

jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3 # 检出代码

- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: 18

- run: npm install && npm run build # 安装依赖并构建

- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }} # 自动生成的token
publish_dir: ./dist # 部署dist目录


如果还是不行,建议去看Actions的执行日志,通常会有明确提示。部署类的问题最烦的就是等它跑完才能看到问题,我懂这种痛苦...
点赞 1
2026-03-09 08:15
码农艺涵
你的配置写法本身其实是对的,branches: [deploy] 语法上没问题。如果 push 到 main 还在跑,大概率是文件没提交上去,或者分支名大小写没对上。不过我看你用的 action 版本都还是 v3,这稍微有点旧了,既然要改,不如顺手升个级,顺便把代码写得更规范点。

这是优化后的配置,我帮你把依赖都升到了 v4,写法也更符合现在的最佳实践:

name: Deploy to GitHub Pages

on:
push:
branches:
- deploy

jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '18'
cache: 'npm'
- name: Install and Build
run: npm ci && npm run build
- name: Deploy
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./dist


顺便给你几个排查建议,如果这样改了还不行,检查一下这几件事:第一,确认这个 workflow 文件本身是提交在默认分支(通常是 main)上的,GitHub Actions 要求 workflow 文件必须在默认分支才能生效监听;第二,确认分支名拼写完全一致,GitHub 对大小写是敏感的;第三,我把 npm install 换成了 npm ci,这在 CI 环境下更干净、速度更快,算是顺手做的一点小重构。试试这个版本,应该能解决你的问题。
点赞
2026-03-04 15:17