Hugo

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 说明

  1. 主题 submodule
themes/meme → https://github.com/reuixiy/hugo-theme-meme.git
  1. 网站输出 submodule(关键)
public → https://github.com/Bejsernia/Bejsernia.github.io.git

说明: GitHub Pages 实际部署的是 public repo 的内容,而不是 Hugo 源仓库。


🆕 创建新博客(Hugo new)

1. 创建新文章

进入项目根目录:

1
cd bejsernia-blog

执行:

1
hugo new posts/your-post-name.md

2. 生成文件位置

Hugo 会在以下路径生成新文件:

content/posts/your-post-name.md

3. 编辑文章

用 Markdown 写内容,例如:

1
2
3
4
5
6
7
---
title: "My New Post"
date: 2026-07-06T12:00:00+08:00
draft: true
---

正文内容写在这里...

⚠️ 注意 draft 参数

  • draft: true → 本地可见,线上不会发布
  • draft: false → 会被发布

或者构建时用:

1
hugo -D   # 包含 draft

🚀 正确发布流程(已自动化)

写完文章后只需要执行:

1
./deploy.sh

脚本会自动完成:

Step 1: 构建网站

1
hugo --gc --minify

生成静态文件到:

public/

Step 2: 更新 GitHub Pages repo

1
2
3
4
cd public
git add -A
git commit -m "update site"
git push origin main

Step 3: 更新 submodule 指针

1
2
3
4
cd ..
git add public
git commit -m "update submodule pointer"
git push origin main

GitHub Pages 工作原理

GitHub Pages 只关心:

public repo 的最新 commit

因此必须保证:

  1. public repo 已 push
  2. 主 repo 已更新 submodule pointer

否则网站不会更新


常见问题

页面没有更新

通常原因:

  • 只运行 hugo,没有 push public
  • public 更新了,但没有更新 submodule pointer

忘记提交 public

必须执行:

1
2
3
4
cd public
git add -A
git commit -m "update"
git push

submodule 未同步

必须在主仓库执行:

1
2
3
git add public
git commit
git push

快速手动恢复流程

如果 deploy.sh 出问题,可以手动执行:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
hugo --gc --minify

cd public
git add -A
git commit -m "update site"
git push

cd ..
git add public
git commit -m "update submodule"
git push

推荐习惯

每次更新博客只做一件事:

1
./deploy.sh

不要直接手动修改 public(除非用于调试)


架构总结

Markdown(content/)
        ↓
Hugo build
        ↓
public (static site)
        ↓
GitHub Pages (Bejsernia.github.io)

updatedupdated2026-07-062026-07-06