You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同一GitHub仓库双分支部署两个GitHub Pages站点方案咨询

实现方案与操作步骤

核心思路

通过修改两个分支的GitHub Actions工作流,让它们分别操作gh-pages分支的不同目录:

  • branch1(Next.js项目)部署后覆盖gh-pages分支根目录,但保留branch2文件夹
  • branch2(静态站点)部署后仅更新gh-pages分支下的branch2文件夹,不触动根目录内容

1. 修改branch1的工作流脚本

替换branch1中现有的.github/workflows/[原部署文件名].yml为以下内容:

name: Deploy Next.js to GitHub Pages (Root)

on:
  push:
    branches: [branch1]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: 拉取branch1代码
        uses: actions/checkout@v4

      - name: 配置Node.js环境
        uses: actions/setup-node@v4
        with:
          node-version: '20'
          cache: 'npm'

      - name: 安装依赖
        run: npm ci

      - name: 构建并导出Next.js静态文件
        run: npm run export

      - name: 拉取gh-pages分支
        uses: actions/checkout@v4
        with:
          ref: gh-pages
          path: gh-pages

      - name: 保留branch2文件夹并更新根目录
        run: |
          cd gh-pages
          # 删除根目录下除branch2外的所有内容
          ls -1 | grep -v 'branch2' | xargs rm -rf
          # 将Next.js构建产物复制到根目录
          cp -r ../out/* .

      - name: 提交并推送变更
        run: |
          cd gh-pages
          git config user.name "GitHub Actions"
          git config user.email "actions@github.com"
          git add .
          git commit -m "Deploy branch1 to root" || echo "无变更需要提交"
          git push

2. 添加branch2的工作流脚本

在branch2中创建.github/workflows/deploy-branch2.yml文件,内容如下:

name: Deploy Static Site to GitHub Pages (/branch2)

on:
  push:
    branches: [branch2]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: 拉取branch2代码
        uses: actions/checkout@v4
        with:
          path: branch2

      - name: 拉取gh-pages分支
        uses: actions/checkout@v4
        with:
          ref: gh-pages
          path: gh-pages

      - name: 更新gh-pages中的branch2目录
        run: |
          # 确保branch2目录存在
          mkdir -p gh-pages/branch2
          # 将branch2的所有内容复制到目标目录,覆盖旧文件
          cp -r branch2/* gh-pages/branch2/

      - name: 提交并推送变更
        run: |
          cd gh-pages
          git config user.name "GitHub Actions"
          git config user.email "actions@github.com"
          git add .
          git commit -m "Deploy branch2 to /branch2" || echo "无变更需要提交"
          git push

3. 配置GitHub Pages源

  1. 进入仓库的Settings页面
  2. 选择左侧的Pages选项
  3. 在Source区域:
    • 分支选择gh-pages
    • 目录选择/ (root)
  4. 点击Save保存配置

4. 测试部署

  • 向branch1推送任意变更:工作流会自动更新gh-pages根目录,同时保留branch2文件夹
  • 向branch2推送任意变更:工作流仅更新gh-pages/branch2目录,不影响根目录内容

内容的提问来源于stack exchange,提问作者DavidNyan10

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 21:45:36