Hexo 搭建我的博客 #02 使用 GitHub 托管

本文首发于:y0ngb1n.github.io/a/bc7483d9.…html

新建仓库

新建仓库

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

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

提交源码

按照仓库页面上的提示进行操做便可:npm

# 初始化 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 进行编译:bash

# 清除缓存,可选
hexo clean

# 编译
hexo g
复制代码

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

# 安装插件
npm install hexo-deployer-git
复制代码

修改 _config.ymlssh

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 原理与运用(一):远程登陆」。gitlab

而后进行部署:ui

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 分支有更新,会更新部署,此时访问 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 功能,如:

参考资料

相关文章
相关标签/搜索