You need to enable JavaScript to run this app. GitHub Pages自定义域名配置在推送gh-pages新提交后被重置如何解决
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Pages自定义域名配置在推送gh-pages新提交后被重置如何解决

问题核心成因

GitHub Pages的自定义域名配置并非独立存储在平台设置后台,它会实时同步为站点发布分支根目录下的CNAME文件。
你当前的推送脚本存在全量清空分支文件的逻辑:

  • 每次构建后创建无历史记录的孤儿分支
  • 执行rm -rf *删除分支内所有原有文件
  • 仅写入Zola构建产物、.nojekyll标识、新生成的README.md
    整个流程未保留存储自定义域名的CNAME文件,强推覆盖分支后,GitHub Pages服务检测不到CNAME文件,就会自动清空设置中的自定义域名配置,回退为默认的.github.io访问地址。

可落地的修改方案

适配现有脚本逻辑,无需大幅改动,只要保证每次推送的gh-pages分支根目录下存在正确的CNAME文件即可,两种实现方式二选一:

  • 最简单的实现:在创建站点标识文件的步骤中,直接将自定义域名写入CNAME文件。比如你的域名为www.bigelectrons.com,在现有脚本的touch .nojekyll附近添加一行命令:
    echo "www.bigelectrons.com" > CNAME
    
    每次构建推送时,分支根目录都会携带与自定义域名一致的CNAME文件,平台不会触发配置重置。
  • 如果不想把域名硬编码在流程脚本中,可以在清空旧文件前先备份原有CNAME,等新构建内容写入完成后再恢复。修改后的对应脚本片段:
    - name: Commit and push to target branch
      run: |-
        git config --global user.email "workflow-bot@mydomain.com"
        git config --global user.name "workflow-bot"
        git checkout --orphan $TARGET_BRANCH
        # 提前备份原有CNAME文件,文件不存在则跳过
        cp CNAME /tmp/CNAME 2>/dev/null || true
        rm -rf .github/
        mv public ..
        rm -rf *
        mv ../public/* .
        # 恢复备份的CNAME文件
        cp /tmp/CNAME ./CNAME 2>/dev/null || true
        touch .nojekyll
        touch README.md
        echo 'https://www.bigelectrons.com - SITE GENERATED USING ZOLA' > README.md
        git add .
        git commit -m "generated using zola build"
        git push --set-upstream origin $TARGET_BRANCH --force
    
  • 注意:修改完成后首次运行流程,可检查gh-pages分支根目录下的CNAME文件内容是否与自己的自定义域名一致,确保配置生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 06:06:05