我有几个疑问:
问题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/1custom-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,保持两个站点内容一致 |