前言

完成Hexo博客搭建指南前面几个章节的流程后,本地的Butterfly主题的Hexo博客已经能运行起来了,下面的工作就是要把博客发布到GitHub Pages。

本文主要解决如下4个问题:

1、怎么创建GitHub Pages仓库
2、怎么把本地的Hexo博客部署到GitHub Pages
3、解决使用git时报错:fatal: unable to access 'https://***.github.io/': Received HTTP code 400 from proxy after CONNECT
4、解决使用git时报错:remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.

为什么使用GitHub Pages

GitHub有一个非常有用的功能,称为GitHub Pages,它允许您在Web上实时发布网站代码。

GitHub Pages的优势:

  1. 搭建简单而且免费
  2. 支持静态脚本;
  3. 可以绑定你的域名;
  4. 理想的写博环境,随意DIY,git+github+markdown+其他;
  5. 充分的自由度,毕竟部署在github上…

准备工作

  1. 点击你的GitHub主页的”New”,准备创建一个新的仓库;

  2. 创建仓库有两点要注意:
    仓库类型一定是**public**
    仓库名一定是 **你的用户名.github.io**
    以我的测试github账户的用户名yeluohua为例, 仓库名就是 yeluohua.github.io,如图所示:

  3. 仓库创建完成之后,进入仓库主页。

点击Settings–>Pages,可以看到

Your site is published at https://yeluohua.github.io/

这就意味着可以用这个链接访问你的网站了。

4. 在浏览器中访问 https://yeluohua.github.io/

  1. 至此,个人GitHub Pages个人仓库已经创建完毕,可以开始部署Hexo博客到仓库了。

部署步骤

  1. 安装模块

    npm install hexo-deployer-git --save
  2. 配置
    blog/_config.yml

    deploy:
    - type: git
    repo:
    github:
    url: https://github.com:name/name.git # GitHub Pages的https链接
    branch: master # GitHub Pages的分支
    token: GitHub Token
    name: name # GitHub用户名
    email: email@qq.com # GitHub登陆邮箱
  3. 推送到 GitHub 远程仓库

    hexo clean && hexo g && hexo d

    如果推送成功的话,会看到如下提示信息:

    Counting objects: 244, done.
    Delta compression using up to 4 threads.
    Compressing objects: 100% (157/157), done.
    Writing objects: 100% (244/244), 47.80 KiB | 627.00 KiB/s, done.
    Total 244 (delta 128), reused 0 (delta 0)
    remote: Resolving deltas: 100% (128/128), completed with 84 local objects.
    To https://github.com/***.github.io
    36b5718..8a35a87 HEAD -> master
    Branch 'master' set up to track remote branch 'master' from 'https://github.com/***.github.io'.
    INFO  Deploy done: git
  4. 然后在https://github.com/你的用户名.github.io这个仓库的master分支下可以看到已上传的静态文件。

  5. 在浏览器中输入https://你的用户名.github.io就能打开你的博客了。

问题解决

错误一

fatal: unable to access 'https://***.github.io/': Received HTTP code 400 from proxy after CONNECT
FATAL {
err: Error: Spawn failed
at ChildProcess.<anonymous> (d:\Code\hexo\node_modules\hexo-util\lib\spawn.js:51:21)
at ChildProcess.emit (events.js:315:20)
at ChildProcess.cp.emit (d:\Code\hexo\node_modules\cross-spawn\lib\enoent.js:34:29)
at Process.ChildProcess._handle.onexit (internal/child_process.js:277:12) {
code: 128
}
} Something's wrong. Maybe you can find the solution here: %s https://hexo.io/docs/troubleshooting.html

这个错误一般是本地设置了代理导致,尝试使用如下命令解决:

git config --global --unset http.proxy
git config --global --unset https.proxy
git config --global --unset core.gitproxy

使用git config -l --show-origin|grep -i proxy检查设置是否有遗漏。
(注:windows下检查命令为git config -l --show-origin|findstr proxy

错误二

推送代码时,弹出一个GitHub的登陆框,输入用户名密码后,控制台会提示:

remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.

这个很简单,2021年8月13日起GitHub不再支持密码身份验证的解决方案,需要通过github personal access token来进行git操作,按如下步骤生成access token:

  1. 进入 https://github.com/settings/apps
  2. 点击“Personal access tokens”
3. 点击右上角的“generate new token”, - 填入Note(access token的标识,随意填) - 选择access token期限(最好不选永久), - 权限只需要选择`repo`即可 4. 点击“Generate token”生成access token,记录生成的access token 5. 删除之前的git用户密码缓存。这一步很关键,一定要删除之前的缓存,不然还是提示上述错误。
# 运行一下命令缓存
git config --global credential.helper wincred
# 清除掉缓存在git中的用户名和密码
git credential-manager uninstall
6. 重新执行推送到 GitHub 远程仓库,在弹出的GitHub登陆框的密码区域填入刚才生成的access token即可。
hexo clean && hexo g && hexo d