新建仓库#
新建一个名为 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: [email protected]: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
),此时就能选择部署哪个分支了。
我想到的有两个解决方案:
- 调整分支策略:
master
:编译后的静态资源source
:博客源码
- 修改仓库名(如
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: [email protected]: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 '[email protected]: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 博客页面。
因为我们调整了分支策略,所以此时 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 功能,如: