GitHub Pages 是什么?
GitHub Pages 是由 GitHub 官方提供的一种免费的静态站点托管服务,让我们可以在 GitHub 仓库里托管和发布自己的静态网站页面。
Hexo 是什么?
Hexo 是一个快速、简洁且高效的静态博客框架,它基于 Node.js 运行,可以将我们撰写的 Markdown 文档解析渲染成静态的 HTML 网页。
Hexo + GitHub 文章发布原理
在本地撰写 Markdown 格式文章后,通过 Hexo 解析文档,渲染生成具有主题样式的 HTML 静态网页,再推送到 GitHub 上完成博文的发布。
Hexo部署到Ghthub
- 安装git
官网地址:https://git-scm.com
访问官方网站,下载对应的安装包,进行安装
安装完成后,鼠标右键可以看到:Git Bash Here,点击后打开
git --version![]()
- 安装nodejs
官网地址:https://nodejs.org
- 访问nodejs官方网站,下载对应的安装包,进行安装
- 安装完成后,配置环境变量,并在终端里面输入:
node -v

安装Hexo
npm install hexo -g

测试是否安装成功
hexo -v

初始化Hexo
新建一个blog文件夹
hexo init
可以看到博客存放目录里出现了相关文件
hexo项目目录内容如下:
.
├── _config.yml :站点的配置文件,需要备份。
├── themes :主题文件夹,需要备份。
├── source :资源文件夹。用来存放图片、Markdown 文档(文章、草稿)、各种页面(分类、关于页面等),需要备份。
├── scaffolds :文章的模板,需要备份。
├── package.json :安装包的名称,需要备份。
├── .gitignore :限定在 push 时哪些文件可以忽略,需要备份 .git :主题和站点都有,标志这是一个 git 项目,不需要备份。
├── node_modules :是安装包的目录,在执行 npm install 的时候会重新生成,不需要备份。
├── public :hexo g 生成的静态网页,将 source 文件夹里的 MarkDown 文档,转换成 index.html,不需要备份。
├── deploy_git :将 public 文件夹的内容提交到 GitHub 后生成,内容与 public 文件夹基本一致,不需要备份。
├── db.json :文件,不需要备份。
生成静态网页
hexo g # 生成静态网页
hexo s # 本地预览
在本地浏览器访问:http://localhost:4000/
文章编写
hexo new <title>
在soruce/
├── source //文章源码目录,该目录下的markdown和html文件均会被hexo处理。
| ├── _drafts //草稿文章
| └── _posts //发布文章
该页面对应repo的根目录,404文件、favicon.ico文件,CNAME文件等都应该放这里,该目录下可新建页面目录。
安装hexo依赖
npm install hexo-deployer-git --save
Git配置
在blog文件夹下打开git输入
git config --global user.email "注册github时使用的邮箱"
git config --global user.name "github的用户名"
生成git公钥
ssh-keygen -t rsa -C "you email@126.com"
提示输入passphrase时可直接回车
使用记事本打开id_rsa.pub复制内容文件在C:\Users\你的用户名\.ssh目录下
进入github登录点击头像→Settings→SSH and GPG keys→New SSH key→在Title中输入hexo博客在key的文本框中输入复制的内容→Add SSH key
在Git Bash中输入
ssh -T git@github.com
出现Hi 用户名! You’ve successfully authenticated, but GitHub does not provide shell access.则证明成功!
打开_config.yml进行修改
补全如下代码 repo即你的仓库https地址
deploy:
type: git
repo: git@github.com:your_name/your_name.github.io.git
branch: main
其中your_name需要替换为你的github的账号
现在需要执行以下命令 就可以发布自己的博客了。每次新建完文章之后部署,也是相同命令
hexo clean # 清除本地缓存
hexo g # 重新生成静态页面
hexo d # 部署到git
