Hexo 搭建个人博客 #02 使用 GitHub 托管

新建仓库

新建仓库

新建一个名为 y0ngb1n.github.io 的仓库,格式为:<username>.github.io

GitHub 为我们提供了一个二级域名 <username>.github.io,如果我们为自己的某个项目开启了 GitHub Pages 功能后,我们可以使用 http(s)://<username>.github.io/<projectname> 进行访问,这样我们可以为每个项目添加上项目展示的 Pages;当我们「新建一个名为 <username>.github.io —自己对应的二级域名—的仓库」时,GitHub 会将该仓库路由为我们的个人主页,可使用 http(s)://<username>.github.io 进行访问。

提交源码

按照仓库页面上的提示进行操作即可:

# 初始化 git 仓库
git init

# 进行版本控制
git add .

# 提交
git commit -m ":tada: init hexo"

# 添加远程仓库(GitHub)地址
git remote add origin https://github.com/y0ngb1n/y0ngb1n.github.io.git

# 推送代码
git push -u origin master

过程会提示输入帐号密码,推送成功后,刷新仓库页面后即可看到我们提交的源码了。

仓库主页

开启 GitHub Pages 功能

先使用 Hexo 进行编译:

# 清除缓存,可选
hexo clean

# 编译
hexo g

然后使用 hexo-deployer-git 插件进行部署:

# 安装插件
npm install hexo-deployer-git

修改 _config.yml

deploy:
type: git
repo: git@github.com:y0ngb1n/y0ngb1n.github.io.git
branch: gh-pages

这里使用 SSH 协议,因为只能走 Git 协议,走 HTTPS 协议会报错;关于 SSH 的请参考「Connecting to GitHub with SSH」、「SSH 原理与运用(一):远程登录」。

然后进行部署:

hexo d

部署成功后,会自动在远程仓库创建 gh-pages 分支。

图片

404 部署出问题了

原本是想部署 gh-pages 分支的,结果只能部署 master 分支,由于我们的 master 分支上没有 index.html 文件,所以访问主页时出现了 404;

经验证:是由于我们的仓库使用了二级域名的方式,GitHub Pages 只能部署 master 分支,且不能选择,如果把名字改为别的(如 blog),此时就能选择部署哪个分支了。

我想到的有两个解决方案:

  1. 调整分支策略:
    • master:编译后的静态资源
    • source:博客源码
  2. 修改仓库名(如 blog):
    • 优点:可调整 github-pages 部署策略
    • 缺点:不能直接使用二级域名访问了,需要加上 /blog 后缀进行访问(可以自定义域名解决)

这里我选择方案 1(调整分支策略):

# 查看所有分支
$ git branch -a
ls
* master
remotes/origin/master

# *先在仓库设置中将 gh-pages 设置为默认分支(否则无法删除 master 分支)

# 重命名本地 master 分支为 source
$ git branch -m master source

# 删除远程 master 分支
$ git push --delete origin master
To github.com:y0ngb1n/y0ngb1n.github.io.git
- [deleted] master

# 上传新的 source 分支
$ git push origin source
To github.com:y0ngb1n/y0ngb1n.github.io.git
* [new branch] source -> source

然后修改 _config.yml,将编译后的静态部署至 master 分支:

deploy:
type: git
repo: git@github.com:y0ngb1n/y0ngb1n.github.io.git
branch: master

修改完成后,执行 hexo d 进行编译部署,直到远程仓库出现新的 master 分支,命令如下:

$ hexo d
INFO Deploying: git
INFO Clearing .deploy_git folder...
INFO Copying files from public folder...
INFO Copying files from extend dirs...
On branch master
nothing to commit, working tree clean
remote:
remote: Create a pull request for 'master' on GitHub by visiting:
remote: https://github.com/y0ngb1n/y0ngb1n.github.io/pull/new/master
remote:
Branch 'master' set up to track remote branch 'master' from 'git@github.com:y0ngb1n/y0ngb1n.github.io.git'.
To github.com:y0ngb1n/y0ngb1n.github.io.git
* [new branch] HEAD -> master
INFO Deploy done: git

此时 github-pages 监测到 master 分支有更新,会更新部署,此时访问 https://y0ngb1n.github.io/ 终于看到了期待以久的 Hexo 博客页面。

y0ngb1n.github.io

因为我们调整了分支策略,所以此时 source 分支才是我们的主分支了,在设置中把 source 设置为默认分支,然后再把 gh-pages 分支从远程仓库中删除掉。

# 删除远程 gh-pages 分支
$ git push --delete origin gh-pages
To github.com:y0ngb1n/y0ngb1n.github.io.git
- [deleted] gh-pages

至此就大功告成啦!

只有 GitHub 可能免费托管吗?

当然不止啦,其它平台也有提供这样的 Pages 功能,如:

参考资料

感谢您的阅读,本文由 杨斌的博客 版权所有。如若转载,请注明出处:杨斌的博客(https://y0ngb1n.github.io/a/bc7483d9.html
Hexo 搭建个人博客 #01 框架的本地安装与运行
Hexo 搭建个人博客 #03 框架的基本结构与打包后的文件介绍