Hugo Blog Deployment Notes (submodule version)
项目结构说明
本博客采用 Hugo + Git submodule 部署方式:
Hugo_page/
└── bejsernia-blog/
├── content/ # Markdown 博客源文件(写作区)
├── themes/meme/ # 主题(git submodule)
├── public/ # Hugo build 输出(git submodule → GitHub Pages repo)
├── config.toml # Hugo 配置
└── deploy.sh # 一键部署脚本
Submodule 说明
- 主题 submodule
themes/meme → https://github.com/reuixiy/hugo-theme-meme.git
- 网站输出 submodule(关键)
public → https://github.com/Bejsernia/Bejsernia.github.io.git
说明: GitHub Pages 实际部署的是 public repo 的内容,而不是 Hugo 源仓库。
🆕 创建新博客(Hugo new)
1. 创建新文章
进入项目根目录:
| |
执行:
| |
2. 生成文件位置
Hugo 会在以下路径生成新文件:
content/posts/your-post-name.md
3. 编辑文章
用 Markdown 写内容,例如:
| |
⚠️ 注意 draft 参数
- draft: true → 本地可见,线上不会发布
- draft: false → 会被发布
或者构建时用:
| |
🚀 正确发布流程(已自动化)
写完文章后只需要执行:
| |
脚本会自动完成:
Step 1: 构建网站
| |
生成静态文件到:
public/
Step 2: 更新 GitHub Pages repo
| |
Step 3: 更新 submodule 指针
| |
GitHub Pages 工作原理
GitHub Pages 只关心:
public repo 的最新 commit
因此必须保证:
- public repo 已 push
- 主 repo 已更新 submodule pointer
否则网站不会更新
常见问题
页面没有更新
通常原因:
- 只运行 hugo,没有 push public
- public 更新了,但没有更新 submodule pointer
忘记提交 public
必须执行:
| |
submodule 未同步
必须在主仓库执行:
| |
快速手动恢复流程
如果 deploy.sh 出问题,可以手动执行:
| |
推荐习惯
每次更新博客只做一件事:
| |
不要直接手动修改 public(除非用于调试)
架构总结
Markdown(content/)
↓
Hugo build
↓
public (static site)
↓
GitHub Pages (Bejsernia.github.io)