Hexo 博客重建总结
Hexo 博客重建总结
凡是过往,皆为序章。6年前的旧博客已无法重新书写,借助AI大模型(opencode + deepseek v4 pro),索性新开一个博客,各项配置都变得简单了起来。本文内容就是与AI交流如何重建博客的对话,经AI总结整理之后的结果。在AI时代下,程序员的工作方式和习惯、用人单位对于岗位的要求等等,都在发生巨大的变化。希望在AI的帮助下,适应和跟上这个时代,重拾积累知识的习惯,努力充实自己,争取早日跳槽。加油~
背景
旧博客现状
- 仓库:
yq3/yq3.github.io,通过 GitHub Pages 托管于https://yq3.github.io - 状态:仓库中仅有 Hexo 编译后的静态 HTML/CSS/JS 产物,Hexo 源文件(Markdown 文章、
_config.yml、主题等)因老电脑丢失而遗失 - 规模:16 篇博客文章(2019 年 7 月至 2020 年 2 月),涵盖 Python/数据分析、Java/Spring、机器学习、MySQL、建站等笔记
- 主题:Landscape(Hexo 默认主题,未安装第三方主题)
- 分类:2 个(技术 15 篇、闲聊 1 篇)
- 标签:14 个(Deep Learning、Hexo、JDBC、Java、Java Swing、Jupyter、Kaggle、Machine Learning、Maven、MySQL、Pandas、Python、Spring、数学建模)
- 旧博客决定:完全封存不动,不进行任何修改
核心问题
旧工作流中 Hexo 源文件仅在本地存储,未纳入版本控制。老电脑丢失后源文件不可恢复,仅剩编译产物。
新博客方案
架构设计
仓库:yq3/codelife
访问地址:https://yq3.github.io/codelife/
工作流:单仓库双分支,源文件和编译产物均在版本控制中,永不丢失
| 分支 | 内容 | 作用 |
|---|---|---|
main |
Markdown 文章、_config.yml、主题等 Hexo 源文件 |
日常 git push 到这个分支 |
gh-pages |
编译后的静态 HTML/CSS/JS | GitHub Actions 自动部署产物,浏览器实际访问的内容 |
流程:本地写 Markdown → git push main → GitHub Actions 触发 hexo generate → 输出推送到 gh-pages → 网站自动更新
方案选择过程
| 方案 | 说明 | 决定 |
|---|---|---|
| 同仓库共存 | 在旧仓库中用 Hexo 编译产物与旧 HTML 共存 | ❌ 存在 CSS 冲突、导航/归档不显示旧文章等兼容问题 |
| 新建项目站点 | 独立新仓库,URL 为 yq3.github.io/xxx/ |
✅ 零兼容问题,新旧完全隔离 |
GitHub Pages 限制:一个账号只能有一个
<username>.github.io用户主站点,但可创建无限个项目站点(URL 为yq3.github.io/<仓库名>/)。项目站点 URL 与仓库名一一对应,不可更改。
技术选型
| 项目 | 选择 | 说明 |
|---|---|---|
| 静态站点生成器 | Hexo | 与旧博客一致,上手快,插件丰富 |
| 主题 | Fluid | Material Design 风格,支持暗色模式、代码高亮、标签云,中英文友好,适合技术+生活混合内容 |
| 部署方式 | GitHub Actions | push 即部署,无需本地执行 hexo deploy |
详细操作步骤
一、创建 GitHub 仓库
- 访问 https://github.com/new
- Repository name:
codelife - 选择 Public(免费账号 Pages 需公开)
- 不要勾选 Initialize 选项(README、.gitignore、License)
- 记录远程地址:
git@github.com:yq3/codelife.git
二、本地初始化 Hexo 项目
1 | |
目录结构:
1 | |
三、配置 _config.yml
关键配置(**root 必须正确填写**):
1 | |
四、安装 Fluid 主题
1 | |
在项目根目录创建 _config.fluid.yml(独立配置文件,方便主题升级时保留自定义配置):
1 | |
五、配置 Git 和 GitHub Actions
5.1 初始化 Git
1 | |
5.2 创建 .gitignore
1 | |
5.3 创建 .github/workflows/deploy.yml
1 | |
六、启用 GitHub Pages
- 首次 push 后,访问
https://github.com/yq3/codelife/settings/pages - Source 选择 “Deploy from a branch”
- Branch 选择 **
gh-pages**,目录选/ (root) - 保存后等待 1-2 分钟,页面显示部署地址
注意:必须在第一次 push 后 Actions 创建了
gh-pages分支,才能在 Pages 设置中选择它。
七、首次提交
1 | |
推送后访问 https://github.com/yq3/codelife/actions 查看构建进度。
八、日常写作流程
1 | |
推送后约 1 分钟自动部署上线。
遇到的问题和解决
问题:GitHub Actions 推送权限被拒
错误信息:
1 | |
原因:GITHUB_TOKEN 默认只有只读权限,无法推送代码。
解决方案(两个都做):
Workflow 文件添加权限声明(在
deploy.yml最外层):1
2permissions:
contents: write仓库设置中开启写权限:
- 访问
https://github.com/yq3/codelife/settings/actions - Workflow permissions 选择 “Read and write permissions”
- 保存
- 访问
注意事项
root: /codelife/是项目站点关键配置,忘记设置会导致所有 CSS/JS/图片 404- Markdown 中引用图片:图片放在
source/img/目录,文章中用引用 - **
.gitignore排除了public/**:编译产物仅在 CI 中生成,不提交到main分支 - 主题配置:使用
_config.fluid.yml而非themes/fluid/_config.yml,便于升级主题时保留自定义配置 - 项目站点 URL 不可更改:
yq3.github.io/<仓库名>/路径与仓库名固定绑定