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

GitHub Actions构建后dist目录未同步至main分支问题求助

问题原因

peaceiris/actions-gh-pages@v3 这个Action的默认行为是将构建产物推送到gh-pages分支,而非你期望的main分支,所以你在main分支里看不到dist目录。

解决方案

根据你的实际需求选择对应方案:

方案1:将dist推送到main分支

如果确实需要把dist目录合并到main分支(而非替换整个分支内容),不推荐直接用该Action,建议用自定义Git命令步骤——因为该Action默认会把publish_dir的内容作为目标分支的全部内容,容易覆盖main分支的原有源码。示例配置如下:

- name: Checkout code
  uses: actions/checkout@v2
  with:
    fetch-depth: 0  # 拉取完整仓库历史,方便后续合并操作

- name: Install dependencies
  run: rm -rf node_modules && rm -rf dist && yarn install

- name: Build
  run: yarn build

- name: Push dist to main branch
  run: |
    git config --global user.name "GitHub Actions"
    git config --global user.email "actions@github.com"
    git add dist/
    git commit -m "chore: add dist directory from build"
    git push origin main

如果是希望用该Action将dist内容替换整个main分支(仅适合纯静态站点仓库),可以添加publish_branch参数指定目标分支:

- name: Publish dist directory
  uses: peaceiris/actions-gh-pages@v3
  with:
    github_token: ${{ secrets.GITHUB_TOKEN }}
    publish_dir: ./dist
    publish_branch: main  # 指定推送目标分支为main
    force_orphan: false   # 保留分支历史,设为true会创建孤立分支直接覆盖所有内容

⚠️ 注意:这种方式会将main分支的内容全部替换为dist目录里的文件,若main分支有其他源码,会被覆盖,请谨慎使用。

方案2:使用默认的gh-pages分支(推荐)

如果只是为了部署静态站点,这是GitHub Pages的标准做法:

  1. 保持你当前的Action配置不变,构建产物会自动推送到gh-pages分支
  2. 进入仓库的「Settings」→「Pages」,将「Source」设置为「gh-pages分支」,保存后即可通过GitHub Pages访问你的静态站点
额外检查项
  • 查看Action运行日志,确认Build步骤是否成功生成了dist目录,避免因构建失败导致没有产物可推送
  • 若main分支开启了分支保护规则,需在规则中允许「GitHub Actions」推送修改,否则会推送失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 20:27:28