日常同步与维护

学习目标

  • 掌握日常内容更新的正确流程
  • 学会处理新增章节的同步配置
  • 掌握 Quartz 版本升级方法
  • 能独立排查常见问题

前置条件

1. 日常更新流程

修改已有笔记

# 在 main 分支编辑笔记
git add .
git commit -m "更新 section3 内容"
git push origin main
# → Actions 自动同步并部署

添加新笔记

把新文件放到对应章节目录下,正常提交即可:

# 在 main 分支添加新文件
git add section5/新笔记.md
git commit -m "添加新笔记"
git push

添加新图片

图片需要先被 git 跟踪,同步工作流才能复制到 v5:

# 将图片放到 image/ 目录
git add image/新图片.png
git commit -m "添加图片资源"
git push

git add 的图片不会被同步。图片引用路径应为 ../image/xxx.png(相对于 content/ 下各章节目录)。

2. 新增章节的处理

如果新建了 section10/ 等目录,需要更新同步工作流的配置:

编辑 .github/workflows/sync-main-to-v5.yml,找到 for dir 行:

- name: Sync content
  run: |
    for dir in section0 section1 section2 section3 section4 section5 section6 section7 section8 section9 appendix image; do
      rsync -a --delete "$dir/" "v5-branch/content/$dir/"
    done

新增 section10 到列表中:

for dir in section0 section1 section2 section3 section4 section5 section6 section7 section8 section9 section10 appendix image; do

同理,如果不想同步某个目录,从列表中移除即可。

3. 分支切换注意事项

mainv5 之间切换时,未跟踪的目录(node_modules/public/quartz/.quartz/)会残留在工作目录中。

# 切回 main 后清理 v5 残留
Remove-Item -Recurse -Force node_modules, public, quartz, .quartz

这些目录已在 main 的 .gitignore 中,不会影响 git 状态,但会占用磁盘空间。

4. 更新 Quartz 版本

Quartz 官方会持续更新 v5 分支。同步上游更新:

git checkout v5
git fetch upstream v5
git merge upstream/v5
# 解决可能的冲突
npm ci
npx quartz plugin install --latest
npx quartz build --serve  # 本地验证
git push

5. 故障排查指南

5.1 网站不更新

  1. 检查 Actions 页面 是否有失败
  2. 确认 main 已推送到远程(git push
  3. 确认 sync-main-to-v5 成功触发
  4. 确认 deploy 成功触发
  5. 硬刷新浏览器(Ctrl+F5)

5.2 构建失败

常见原因:

错误原因解决
Cannot find module依赖缺失npm ci 重新安装
npm ERR! 404镜像源缺少包设置 registry=https://registry.npmjs.org
YAML 解析错误配置格式问题检查缩进和语法
LaTeX 警告数学公式中有中文将中文移出 $...$,或用 \text{} 包裹

5.3 图片不显示

  1. 确认图片文件已 git add 到 main 分支
  2. 确认引用路径正确(如 ../image/xxx.png
  3. 确认 image/ 目录在同步工作流的同步列表中

5.4 链接 404

Quartz v5 自动处理 wikilink 转换。如果手动编写的链接出现 404:

  • 使用相对路径:../sectionX/文件名.md
  • 文件名区分大小写
  • 特殊字符会被 URL 编码

6. 完全重新部署

如果需要从头开始:

# 删除 gh-pages 分支
git push origin --delete gh-pages
 
# 重新推送 v5 触发构建
git checkout v5
git push
 
# 在 Pages 设置中重新选择 gh-pages 分支

扩展阅读

常见问题

Q: 推送到 main 后网站没有更新?

去 Actions 页面查看工作流是否正在运行。如果 sync-main-to-v5 失败,查看日志中的具体错误。

Q: 新增了目录但同步没生效?

同步工作流的 for dir 列表需要手动更新。这是为了防止意外同步不需要的目录。

Q: npm cinpm install 有什么区别?

npm ci 根据 package-lock.json 精确安装,速度更快。npm install 会更新 lockfile。在 CI 环境中推荐 npm ci

练习任务

  1. image/ 中放入一张图片,提交后确认网站能正常显示
  2. 模拟一次新增章节:创建 section10/(可选)
  3. 查看 Actions 日志,熟悉构建输出信息
  4. 尝试本地修改配置并预览效果

验收清单

  • 掌握日常内容更新的完整流程
  • 知道如何处理新增章节
  • 了解常见故障的排查方法
  • 知道如何更新 Quartz 版本