我有几个疑问:
问题7:在.github/workflows/中新创建的deploy-custom-domain.yml,它的作用是什么?它会和原来的deploy.yml产生冲突吗?
问题8:在本地创建并推送 custom-domain 分支的作用是什么?
问题9:当.github/workflows/中有了这两个分支,那下次我git推送本地项目的改动文件到github仓库时,是不是必须要推送两次?
问题10:在注意事项中,你提到”如需同步内容,可将 main 分支的更改合并到 custom-domain 分支“ ,请详细解释一下”如需同步内容“是什么意思?这整句话的含义和应用场景分别是什么?


问题7:deploy-custom-domain.yml 的作用及冲突问题

作用

工作流文件 作用
deploy.yml 监听 main 分支,构建带 /chunking-blog/ 前缀的产物,部署到 GitHub Pages 子路径
deploy-custom-domain.yml 监听 custom-domain 分支,构建带根路径 / 的产物,部署到自定义域名

是否会产生冲突?

不会冲突,原因如下:

  • 触发条件不同:两个工作流监听不同的分支

    • deploy.yml:只在 main 分支推送时触发
    • deploy-custom-domain.yml:只在 custom-domain 分支推送时触发
  • 部署目标不同

    • deploy.yml 的产物带有 /chunking-blog/ 前缀,适合 stuffren.github.io/chunking-blog/
    • deploy-custom-domain.yml 的产物使用根路径 /,适合 www.yourdomain.com
  • 运行时机独立:两个工作流各自在自己的分支推送时运行,不会同时触发


问题8:创建 custom-domain 分支的作用

核心作用:隔离不同环境的代码状态

分支 用途 部署结果
main 主分支,日常开发 GitHub Pages 子路径版本
custom-domain 自定义域名专用 根路径版本

为什么要用分支隔离?

因为两个环境的构建产物不同

  • main 分支构建时注入 BASE_PATH=/chunking-blog/,产物中的链接是 /chunking-blog/posts/1
  • custom-domain 分支构建时不注入 BASE_PATH,产物中的链接是 /posts/1

如果共用同一个分支,每次推送都会触发两个工作流,产生冲突。


问题9:是否需要推送两次?

不需要推送两次文件,但有两个分支需要分别维护。

具体说明

场景 操作
日常开发 推送代码到 main 分支(git push origin main
更新自定义域名站点 main 的更改合并到 custom-domain,然后推送(git push origin custom-domain

工作流程示例

# 1. 日常开发,推送到 main 分支
git checkout main
# ... 修改代码 ...
git add .
git commit -m "更新文章"
git push origin main          # 只触发 deploy.yml

# 2. 同步到 custom-domain 分支
git checkout custom-domain
git merge main                # 将 main 的更改合并过来
git push origin custom-domain # 触发 deploy-custom-domain.yml

关键点

  • 代码修改只需要在 main 分支做一次
  • custom-domain 分支通过 git merge 获取更新,不需要重复修改代码

问题10:"如需同步内容"的含义和应用场景

含义解释

术语 解释
同步内容 main 分支的最新代码更改,合并到 custom-domain 分支
目的 让自定义域名站点和 GitHub Pages 站点显示相同的内容

应用场景

假设你的博客有以下更新:

时间 事件 操作
周一 main 分支发布新文章 推送到 main,GitHub Pages 自动更新
周三 想让别人通过自定义域名也能看到这篇新文章 需要将 main 的更改同步custom-domain

同步的具体操作

# 切换到 custom-domain 分支
git checkout custom-domain

# 将 main 分支的最新更改合并进来
git merge main

# 推送到远程,触发 deploy-custom-domain.yml
git push origin custom-domain

如果不同步会怎样?

分支 状态
main 有最新文章
custom-domain 停留在旧版本,看不到新文章

结论:两个分支是独立的,需要手动同步才能保持内容一致。


总结

问题 核心答案
工作流是否冲突 不冲突,监听不同分支
custom-domain 分支作用 隔离环境,构建不同产物
是否需要推送两次 不需要main 开发一次,custom-domain 通过 merge 同步
"同步内容"含义 main 的更改合并到 custom-domain,保持两个站点内容一致