手把手教你搭建Hexo博客
声明
本文为转载,一切著作权归原作者所有!
来源:
原作者:
简介:
前言
每当在各种大佬群里划水的时候,身为菜鸡,总是很羡慕他们拥有自己的域名和博客。但由于还是学生党,买个域名或者租个云服务器其实也并不是很急迫的事情(主要我是怕买了之后不会用,在那一边闲着haha~),于是自己花了一天时间查找翻阅各种教程动手操作了一番,将 Hexo 部署到了 GitHub Pages,建立了自己的第一个(在某种意义上)真正属于自己的博客网站。本篇文章属于半笔记半教程的零基础小白入门文,教你将 Hexo 部署到了 GitHub Pages,从而获得自己的静态博客网站。
【注意】:本文纯属才疏尚浅的我以笔记的形式进行的记录,很多知识其实我也不是太懂,可能存在理解偏差和错误,来学习的朋友们请自己甄别,路过的大神们也别喷我哈哈哈,有什么建议和问题可以评论提出或者其它方式联系我。我会尽可能保持更新该文章所使用到的技术和做法,并随时接受勘误。
步骤
一、了解并创建GitHub账号和仓库
GitHub是一个面向开源及私有软件项目的托管平台,也是世界上最大的代码托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub。GitHub中文社区,是国内领先的开源社区,是一个可以发现优质开源项目的地方。
由于程序员大多是男性,GitHub又被戏谑地调侃成全球最大同性交友网站"Gayhub",哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈......咳咳,说多了
1. 注册GitHub账号
虽然都是英文,但不必畏惧,也并不会造成使用障碍,只要记得最常用的选项含义即可,以及善用浏览器的网页翻译功能和手头的翻译软件。
注意:注册时的英文用户名将成为你可以使用的免费域名前缀。
注册流程非常简单,这里不再赘述。
2. 在 GitHub 上创建一个新的项目
单击 右上角【+】- New Repository 新建项目。(以下简称仓库)
然后填写项目信息。
仓库的名字格式应为:你的用户名.github.io
为什么必须这个作为仓库名?
因为这是GitHub Pages 服务的命名规范,同时它也将成为你的专属域名。
当然,你也可以购置自己的专属域名并用它来提供内容。
比如我的用户名是Barry-Flynn,那么我的仓库就叫:Barry-Flynn.github.io
(全部小写更好,有大写也没事,除了大小写切换有一丢丢麻烦外没有区别)
在description一栏填写简介,随便填填,比如我填的是:百里飞洋的个人空间
然后选择 Public。
最后勾选 Initialize the repository with a README。
此步的作用是用一个 README.md 对这个仓库进行初始化
完成后点击下面的 Create Repository。
二、安装 VS Code
在安装Git之前,我建议先安装 VS Code。因为安装 Git Bash 时,可以设置 VS Code 作为默认编辑器。Visual Studio Code,简称 VS Code。目前最为强大易用的编辑器,轻量且快速。(宇宙第一编辑器哈哈哈)
注意:它并不是我们常常听到的 VS,VS 常常指的是 Visual Studio,是一个功能强大的 IDE(集成开发环境),体积要比 VS Code 都要大上一个量级。
对于它的安装,直接搜官网下载就行了,免费的,不再赘述。
三、安装 Git
Git 是一个开源的分布式版本控制系统,由 Linus Torvalds(同时也是 Linux 的作者)为了管理 Linux 开发而开发。类似的工具还有:SVN。但始终更推荐 Git,因为它功能更为强大且它的背后还有更强大的生态:GitHub。
你可以直接去官网下载Git并安装,如果国内网速太慢可以“kxsw”或者从其他平台下载。MacOS 用户可以下载官网的安装包进行安装,也可以直接安装 App Store 的 Xcode(附带会安装 Git,但是比较大)。安装时一路next到底就行了,也可以在网上找教程,我不再多说。
四、安装 Node.js
何为Node.js ?Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。简单的说 Node.js 就是运行在服务端的 JavaScript。Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。
对的,看到这个解释我其实也一脸懵,但不妨碍我们用它,想进一步了解的朋友们可以去官网浏览官方文档。
建议下载长期支持版,而非当前发布版,因为如果是最新版,容易出现一些奇妙的 bug。全部默认下一步进行安装。然后Windows 用户打开命令提示符,即按住键盘 Win+R,输入cmd然后回车,弹出黑色代码窗口。
MacOS 用户打开终端。(这个不会就请百度吧,我没用过)
Linux 用户右上角关闭本标签页。
后续如提到输入命令,均默认指打开终端进行输入。
输入node --version
回车,如果得到的版本号与你方才安装的一致,那么 Node.js 就已经成功安装。
Node.js 安装成功时也默认安装了 npm,在此后将会用到。npm 是随 Node.js 一起被安装的包管理工具,你可以理解成 Node.js 自带的应用商店。
对了,国内使用 npm 可能很慢,你可以“kxsw”,或者考虑切换为 taobao 镜像源,即手动输入以下内容后按回车(也可以Ctrl+C和Ctrl+V复制以下代码按回车):
npm config set registry https://registry.npm.taobao.org
五、安装Hexo
Hexo 是一个快速、简洁而强大的博客框架,基于 Node.js,同样托管于 GitHub 之上。生态中拥有众多插件主题。你可以基于它快速生成一些静态页面。你可以使用别人的各种主题与插件,也可以自己定制开发想要的功能。
为什么不是…?
其他常用的博客框架还有 WordPress,Typecho,Ghost 等,但这些往往都需要购置自己的服务器,而无法静态化地部署到 GitHub Pages 上。(当然,相应的功能和灵活性也大大提升。)静态化站点还有一个优势就是访问速度往往更快。
静态网站生成器还有 Vuepress,Gatsby 等。但这些多是为了写文档而量身定制的,你也可以使用它们,但是相较 Hexo 的博客定位,它们关于博客的插件和主题以及解决办法会少得多。
Hexo 提供的功能与 Hugo 几乎都有,(生成大量文件时,甚至比 Hexo 更快)不过它是基于 GO 语言。日后你想对自己的网站进行自定义,即便是 Hugo,你编写前端的交互仍旧需要使用 JavaScript,所以选择基于 JavaScript 的 Hexo 可以降低学习成本。(你若对 GO 有兴趣,仍然可以尝试使用 Hugo,但本教程将不会针对 Hugo 进行展开。)
所以对于新手来说,使用 Hexo 作为起始点,不失为一个好选择。(当然如果你有钱租服务器,并希望快速上手的话,就可以考虑考虑 WordPress 或者 Typecho)
如何安装Hexo呢?
在cmd终端窗口中输入以下命令后回车:
npm install hexo-cli -g
然后等待一会进度条走完,没报错就代表安装成功。
进度条卡住不动可能还是国内网络问题,“kxsw”哦,咳咳....
如果安装失败,可能是没有权限,可以尝试头部加上 sudo 重新执行,即输入:
sudo npm install hexo-cli -g
然后回车
上面命令中,
install 自然是安装。
hexo-cli 则是 hexo 的终端工具,可以帮助你生成一些模版文件,之后再用到。
-g 代表的是全局安装。也就是在任何地方都可以使用,否则会只能在安装的目录下使用。
六、初始化 Hexo 工程
注意:接下来应该是你自己的自定义的目录,请不要完全复制粘贴我的!
比如说我是Windows用户,想把我的网站代码储存在
电脑 E 盘的 *BarryFlynn\Github* 文件夹下
那么我要先在E盘建立相应的文件夹,然后再继续操作。
由于cmd终端最开始默认在C盘操作,我得先切换到E盘,那么我要输入 E: 然后回车,即:
Microsoft Windows [版本 10.0.19042.1165]
(c) Microsoft Corporation。保留所有权利。
C:\Users\10272>E:
E:\>
然后此时,我要通过 *cd* 进入我本地电脑打算存储网站代码的文件夹目录。(或者右键文件夹 Git Bash Here),即 *BarryFlynn\Github* 文件夹里
也就是说我需要输入 *cd BarryFlynn\Github* 然后回车,我会看到:
E:\>cd BarryFlynn\Github\
E:\BarryFlynn\Github>
好了成功进入,接下来输入下方代码,再按回车:
hexo init 你的名字.github.io
hexo
:正是因为我们之前安装了hexo-cli
这一个包,所以我们可以在终端中使用hexo
这一命令。
init
:用来初始化博客的模版文件。后面跟的是你要新建的文件夹,最好和你此前新建的仓库名一致,比如我的是:*Barry-Flynn.github.io*
然后我会看到
E:\BarryFlynn\Github>hexo init Barry-Flynn.github.io
INFO Cloning hexo-starter https://github.com/hexojs/hexo-starter.git
[32mINFO [39m Install dependencies
added 242 packages from 207 contributors in 105.871s
15 packages are looking for funding
run `npm fund` for details
INFO Start blogging with Hexo!
E:\BarryFlynn\Github>
下面通过 *cd* 进入我的博客文件夹,
即输入 cd Barry-Flynn.github.io 后按回车,我会看到:
E:\BarryFlynn\Github>cd Barry-Flynn.github.io
E:\BarryFlynn\Github\Barry-Flynn.github.io>
现在我就是处于 E:\BarryFlynn\Github\Barry-Flynn.github.io 文件夹下操作了,
现在在这个文件夹内默认安装所有 package.json
文件中提到的包,
即输入 npm install 然后回车,我会看到:
E:\BarryFlynn\Github\Barry-Flynn.github.io>npm install
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.3.2 (node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
audited 243 packages in 4.956s
15 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
E:\BarryFlynn\Github\Barry-Flynn.github.io>
这时候,我的 Barry-Flynn.github.io 文件夹里面会多出一堆文件,
文件夹结构应该大致是这样:
.
├── config.yml
├── package.json
├── scaffolds
├── source
| ├── _drafts
| └── _posts
└── themes
现在我们输入 hexo server 然后回车,会看到:
E:\BarryFlynn\Github\Barry-Flynn.github.io>hexo server
INFO Validating config
INFO Start processing
INFO Hexo is running at http://localhost:4000 . Press Ctrl+C to stop.
server
代表开启本地的 Hexo 服务器,这时你就可以打开浏览器,在地址栏中输入localhost:4000
就可以看到本地的网页了。
这个网页就是Hexo为你自动生成的博客页面。
按 Ctrl+C 中断服务器的运行,
系统提示 终止批处理操作吗(Y/N)? 输入 Y 然后回车。
至此,基础的模版页面便已经搭建好了。
七、生成静态文件
到现在,我们的工作都是在本地进行,想必你也很想放到线上与小伙伴们分享。这便轮到了 GitHub Pages 的出场,不过 GitHub Pages 只支持纯静态文件。
所以我们需要使用下面一行命令先来生成站点的静态文件。
(如果进行多次生成,为了避免受错误缓存影响,最好使用 hexo clean 先清除一遍。)
hexo generate
(上方命令也可以缩写为 hexo g)
输入后回车,我会看到:
E:\BarryFlynn\Github\Barry-Flynn.github.io>hexo g
INFO Validating config
INFO Start processing
INFO Files loaded in 209 ms
INFO Generated: archives/index.html
INFO Generated: archives/2021/index.html
INFO Generated: archives/2021/08/index.html
(node:20772) Warning: Accessing non-existent property 'lineno' of module exports inside circular dependency
(Use `node --trace-warnings ...` to show where the warning was created)
(node:20772) Warning: Accessing non-existent property 'column' of module exports inside circular dependency
(node:20772) Warning: Accessing non-existent property 'filename' of module exports inside circular dependency
(node:20772) Warning: Accessing non-existent property 'lineno' of module exports inside circular dependency
(node:20772) Warning: Accessing non-existent property 'column' of module exports inside circular dependency
(node:20772) Warning: Accessing non-existent property 'filename' of module exports inside circular dependency
INFO Generated: index.html
INFO Generated: fancybox/jquery.fancybox.min.css
INFO Generated: js/script.js
INFO Generated: 2021/08/25/hello-world/index.html
INFO Generated: css/style.css
INFO Generated: css/fonts/fontawesome-webfont.woff2
INFO Generated: css/fonts/fontawesome-webfont.woff
INFO Generated: fancybox/jquery.fancybox.min.js
INFO Generated: css/fonts/fontawesome-webfont.ttf
INFO Generated: css/fonts/FontAwesome.otf
INFO Generated: css/fonts/fontawesome-webfont.eot
INFO Generated: js/jquery-3.4.1.min.js
INFO Generated: css/images/banner.jpg
INFO Generated: css/fonts/fontawesome-webfont.svg
INFO 17 files generated in 1.98 s
E:\BarryFlynn\Github\Barry-Flynn.github.io>
此时我的文件夹目录下会出现 public 这个文件夹,里面存放的就是我的站点的静态文件。
八、与远程仓库建立关联
接下来我们将本地的仓库与此前在 GitHub 上建立的仓库建立关联。
输入 git init 初始化 Git 仓库,只需要执行一次即可,看到:
E:\BarryFlynn\Github\Barry-Flynn.github.io>git init
Initialized empty Git repository in E:/BarryFlynn/Github/Barry-Flynn.github.io/.git/
在将其部署到 GitHub Pages 上之前,我们最好先建立一个分支。
什么是分支?
Git 提供了版本管理功能,其中还有一个分支功能,你现在可以简单地将其理解为平行世界。
你的名字.github.io 部署后,GitHub Pages 将默认使用你的 main分支(以前叫 master分支,一个意思,主要分支的意思)作为静态文件部署。所以我们最好新建一个 hexo 分支(命名无所谓)用来存储 Hexo 地源代码,master 分支则用来存储部署后的静态文件。为了方便,不想其他名字了,这个分支我就起名叫 hexo 吧。
新建该分支的命令语句是 git checkout -b hexo ,然后回车,可以看到:
E:\BarryFlynn\Github\Barry-Flynn.github.io>git checkout -b hexo
Switched to a new branch 'hexo'
E:\BarryFlynn\Github\Barry-Flynn.github.io>
这时便成功建立了一个 hexo 分支。(此后的工作都将在 hexo 分支下进行)
你可以通过 git branch -v
来查看当前有哪些分支,使用 git checkout 分支名
来切换到对应的分支。
九、部署到 GitHub Pages
为了更方便的部署到 GitHub Pages,Hexo 提供了 hexo-deployer-git
插件。
老规矩,安装该插件,要输入下面命令,
npm install hexo-deployer-git
回车后可以看到
E:\BarryFlynn\Github\Barry-Flynn.github.io>npm install hexo-deployer-git
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.3.2 (node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
+ hexo-deployer-git@3.0.0
added 1 package from 1 contributor and audited 244 packages in 8.166s
15 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
E:\BarryFlynn\Github\Barry-Flynn.github.io>
下面对 Barry-Flynn.github.io 文件夹下的 _config.yml 文件进行配置。
右键 _config.yml ,打开方式选VS Code(或者直接用VS Code打开该文件),
滑到最下面,把关于
# Deployment
## Docs: https://hexo.io/docs/one-command-deployment
deploy:' '
的这段代码补充为
# Deployment
## Docs: https://hexo.io/docs/one-command-deployment
deploy:
type: git
repo: https://github.com/Barry-Flynn/Barry-Flynn.github.io #仓库地址
branch: main # 默认使用 master 分支(Github现在改名为main分支)
message: Update Hexo Static Content # 你可以自定义此次部署更新的说明说明
Ctrl+S保存,退出VS Code,部署!
终端里输入命令 hexo deploy 后(或者缩写为 hexo d )回车,我的电脑显示:
E:\BarryFlynn\Github\Barry-Flynn.github.io>hexo deploy
INFO Validating config
INFO Deploying: git
INFO Setting up Git deployment...
Initialized empty Git repository in E:/BarryFlynn/Github/Barry-Flynn.github.io/.deploy_git/.git/
Author identity unknown
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: unable to auto-detect email address (got '10272@DESKTOP-N3PNS7C.(none)')
FATAL {
err: Error: Spawn failed
at ChildProcess.<anonymous> (E:\BarryFlynn\Github\Barry-Flynn.github.io\node_modules\hexo-util\lib\spawn.js:51:21) at ChildProcess.emit (events.js:400:28)
at ChildProcess.cp.emit (E:\BarryFlynn\Github\Barry-Flynn.github.io\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
E:\BarryFlynn\Github\Barry-Flynn.github.io>
是的,部署出错(FATAL)了,“ Please tell me who you are.”
原来是创建git文件夹的时候信息不完善导致的,
它提示我需要运行(Run)下面两行程序,来设置我帐户的默认标识。
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
注意双引号前有空格,邮箱随便填也可以,比如QQ邮箱啥的,
我用的这个邮箱查找路径是:点击Github主页右上角头像,点击settings,点击Emails,然后就能找到Github的这个邮箱了
那么我分别输入这两个命令按回车,可见下方代码:
E:\BarryFlynn\Github\Barry-Flynn.github.io>git config --global user.email "Barry-Flynn@users.noreply.github.com"
E:\BarryFlynn\Github\Barry-Flynn.github.io>git config --global user.name "Barry Flynn"
E:\BarryFlynn\Github\Barry-Flynn.github.io>
再用命令 *git config -l* 查看所有的配置信息
E:\BarryFlynn\Github\Barry-Flynn.github.io>git config -l
diff.astextplain.textconv=astextplain
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
http.sslbackend=openssl
http.sslcainfo=E:/Git/mingw64/ssl/certs/ca-bundle.crt
core.autocrlf=true
core.fscache=true
core.symlinks=false
pull.rebase=false
credential.helper=manager-core
credential.https://dev.azure.com.usehttppath=true
init.defaultbranch=master
user.email=Barry-Flynn@users.noreply.github.com
user.name=Barry Flynn
core.repositoryformatversion=0
core.filemode=false
core.bare=false
core.logallrefupdates=true
core.symlinks=false
core.ignorecase=true
E:\BarryFlynn\Github\Barry-Flynn.github.io>
可以看见下面这两条信息,代表信息以及完善上去了
user.email=Barry-Flynn@users.noreply.github.com
user.name=Barry Flynn
那我们接着部署吧!
终端里输入命令 hexo deploy 后(或者缩写为 hexo d )回车,我的电脑再次报错:
E:\BarryFlynn\Github\Barry-Flynn.github.io>hexo deploy
INFO Validating config
INFO Deploying: git
INFO Clearing .deploy_git folder...
INFO Copying files from public folder...
INFO Copying files from extend dirs...
warning: LF will be replaced by CRLF in 2021/08/25/hello-world/index.html.
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in archives/2021/08/index.html.
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in archives/2021/index.html.
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in archives/index.html.
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in css/fonts/fontawesome-webfont.svg.
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in css/style.css.
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in fancybox/jquery.fancybox.min.js.
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in index.html.
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in js/jquery-3.4.1.min.js.
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in js/script.js.
The file will have its original line endings in your working directory
[master (root-commit) a9fc5f8] Update Hexo Static Content
17 files changed, 5174 insertions(+)
create mode 100644 2021/08/25/hello-world/index.html
create mode 100644 archives/2021/08/index.html
create mode 100644 archives/2021/index.html
create mode 100644 archives/index.html
create mode 100644 css/fonts/FontAwesome.otf
create mode 100644 css/fonts/fontawesome-webfont.eot
create mode 100644 css/fonts/fontawesome-webfont.svg
create mode 100644 css/fonts/fontawesome-webfont.ttf
create mode 100644 css/fonts/fontawesome-webfont.woff
create mode 100644 css/fonts/fontawesome-webfont.woff2
create mode 100644 css/images/banner.jpg
create mode 100644 css/style.css
create mode 100644 fancybox/jquery.fancybox.min.css
create mode 100644 fancybox/jquery.fancybox.min.js
create mode 100644 index.html
create mode 100644 js/jquery-3.4.1.min.js
create mode 100644 js/script.js
fatal: unable to access 'https://github.com/Barry-Flynn/Barry-Flynn.github.io/': OpenSSL SSL_read: Connection was reset, errno 10054
FATAL {
err: Error: Spawn failed
at ChildProcess.<anonymous> (E:\BarryFlynn\Github\Barry-Flynn.github.io\node_modules\hexo-util\lib\spawn.js:51:21) at ChildProcess.emit (events.js:400:28)
at ChildProcess.cp.emit (E:\BarryFlynn\Github\Barry-Flynn.github.io\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
E:\BarryFlynn\Github\Barry-Flynn.github.io>
又报错了?我很晕。问了群里大佬,说可能是国内的墙导致的网络问题。好吧,免费的那个什么软件工具果然不太靠谱。解决该问题并重新连接后第三次输入命令 hexo deploy ,回车
E:\BarryFlynn\Github\Barry-Flynn.github.io>hexo deploy
INFO Validating config
INFO Deploying: git
INFO Clearing .deploy_git folder...
INFO Copying files from public folder...
INFO Copying files from extend dirs...
warning: LF will be replaced by CRLF in 2021/08/25/hello-world/index.html.
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in archives/2021/08/index.html.
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in archives/2021/index.html.
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in archives/index.html.
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in css/fonts/fontawesome-webfont.svg.
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in css/style.css.
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in fancybox/jquery.fancybox.min.js.
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in index.html.
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in js/jquery-3.4.1.min.js.
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in js/script.js.
The file will have its original line endings in your working directory
On branch master
nothing to commit, working tree clean
info: please complete authentication in your browser...
Enumerating objects: 31, done.
Counting objects: 100% (31/31), done.
Delta compression using up to 4 threads
Compressing objects: 100% (25/25), done.
Writing objects: 100% (31/31), 882.21 KiB | 4.98 MiB/s, done.
Total 31 (delta 3), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (3/3), done.
To https://github.com/Barry-Flynn/Barry-Flynn.github.io
+ 4b62927...a9fc5f8 HEAD -> main (forced update)
Branch 'master' set up to track remote branch 'main' from 'https://github.com/Barry-Flynn/Barry-Flynn.github.io'.
[32mINFO [39m Deploy done: [35mgit[39m
E:\BarryFlynn\Github\Barry-Flynn.github.io>
成功了!Ohhhhhhhhhhh~
等待完成后,打开网址 https://你的名字.github.io
就能看到你的线上网站了!
使用 https,http 可能无法正常打开。HTTPS 是多了安全加密的 HTTP,Chrome 浏览器已经默认会显示
http
链接为不安全。为了安全,建议开启强制 https 跳转。
项目地址页面 -> Settings -> Options -> GitHub Pages -> Enforce HTTPS
。(翻到下面)此时,http 网址会自动重定向到 https
十、备份与自动部署
我们当前只是将生成的静态文件部署到了云端。
为了以防万一,我们应该将网站的源代码文件也推送到 GitHub 仓库备份。
输入下方代码按回车,与远程 Git 仓库建立连接,只此一次即可
git remote add origin https://github.com/你的用户名/你的名字.github.io
但我一开始因为手抖,没输完就按回车了,如下:
(注意,这是错误代码!没输完整)
E:\BarryFlynn\Github\Barry-Flynn.github.io>git remote add origin https://github.com/Barry-Flynn
查了一下,我需要运行输入 git remote rm origin 删除远程地址,
然后再输入一遍正确的命令与远程 Git 仓库建立连接,之后就行了:
(你们不用执行这一步哦,我是因为输错地址导致绑定错了)
E:\BarryFlynn\Github\Barry-Flynn.github.io>git remote rm origin
E:\BarryFlynn\Github\Barry-Flynn.github.io>git remote add origin https://github.com/Barry-Flynn/Barry-Flynn.github.io
接下来准备提交,这三句命令将是你以后每次备份所需要输入。
(括号内为注释,不用输入哈!)
(添加到缓存区)
git add -A
(这次做了什么更改,简单描述下即可)
git commit -m
(第一次提交时,你可能需先运行下面命令设置一下默认提交分支)
(git push --set-upstream origin hexo)
(推送至远程仓库)
git push
之后写文章可以在该项目下写,与之前一样,只不过这里同时管理了两个分支。
master -负责展示静态网页
hexo -备份本地hexo文件
master分支更新
hexo d
hexo分支更新
git add . #添加所有文件到暂存区
git commit -m "新增博客文章" #提交
git push origin hexo #推送hexo分支到Github
十一、开始写作
在上一篇文章中提到,初始化hexo博客后我们获得了它自动为我们生成的博客页面,同时还给我们生成了一个标题为“Hello World”的帖子。那么我们以后如何写新帖子发布到我们的博客网站呢?
打开“命令提示符窗口”进行操作,即之前用到的cmd窗口。
Windows用户打开方式是按住Win+R,再输入cmd然后回车即可。
打开后我的电脑是显示如下的:
Microsoft Windows [版本 10.0.19042.1165]
(c) Microsoft Corporation。保留所有权利。
C:\Users\10272>
和第二篇文章第六步的操作相同,
由于窗口默认是在C盘操作,我们需要进入到本地电脑之前存储网站代码的“文件夹目录”,对于我来说,由于我存储网站代码的“Barry-Flynn.github.io”文件夹是放在 E盘 的 BarryFlynn\Github\ 文件夹里的,所以我需要先进入 E盘 ,然后回车,显示如下:
Microsoft Windows [版本 10.0.19042.1165]
(c) Microsoft Corporation。保留所有权利。
C:\Users\10272>e:
E:\>
再通过cd命令进入 BarryFlynn\Github\Barry-Flynn.github.io” 文件夹:
(这一步请根据你自己之前存放的地址,不要照抄我的哈)
Microsoft Windows [版本 10.0.19042.1165]
(c) Microsoft Corporation。保留所有权利。
C:\Users\10272>e:
E:\>cd barryflynn\github\barry-flynn.github.io
E:\BarryFlynn\Github\Barry-Flynn.github.io>
(题外话:我通过上面这行命令亲自实践发现,虽然我的文件夹的命名同时包含大小写,但我全输入小写也是可以进入的)
好了,现在可以开始通过命令开始第一次写作了。
1.创建新帖子
输入以下命令,并回车:
(注意双引号是英文输入法下的!双引号内文字即为你要新建的文章帖子的标题)
hexo new "我的第一篇博客文章"
(或缩写成:hexo n "我的第一篇博客文章")
回车后不一会儿,它提示我 Barry-Flynn.github.io\source_posts\我的第一篇博客文章.md 文件已经建好了。你会发现该文件后缀名是“.md”,没错,hexo默认我们用Markdown 格式书写文章。
Hexo 支持以任何格式书写文章,只要安装了相应的渲染插件。
例如,Hexo 默认安装了 hexo-renderer-marked 和 hexo-renderer-ejs,因此你不仅可以用 Markdown 写作,你还可以用 EJS 写作。如果你安装了 hexo-renderer-pug,你甚至可以用 Pug 模板语言书写文章。
只需要将文章的扩展名从 md 改成 ejs,Hexo 就会使用 hexo-renderer-ejs 渲染这个文件,其他格式同理。
现在,我之前让大家下载的VSCode编辑器这时候就派上用场了,当然,如果你对Markdown非常熟悉也有自己用的顺手的编辑器的话,当然可以根据你自己的习惯使用别的编辑器进行写作,但本文章仅使用VSCode进行演示。
2.编写文章内容
双击打开VSCode,
点击左上角“文件”,点击“选择文件”,
找到刚刚新建的“我的第一篇博客文章.md ” 并打开,
现在可以开始你的创作之旅了。
如果不会用Markdown语法书写文章的话可以在其他地方学习一下,
或进入官网进行学习:
Markdown 中文文档 https://markdown-zh.readthedocs.io/en/latest/
这里插个话:理论上,vscode 在没有安装任何插件的情况下是可以直接编写markdown文档的,书写过程中点击vscode右上角的其中一个小按钮可以在右侧实时预览效果。
但是为了能够得到一些更加丰富的功能和有好多体验,可以通过增添新的插件对其功能进行完善。
比如 Markdown Preview Enhanced 就是一个很好用的完善预览功能的插件,可以更加形象的展示所编写的pdf格式的文档样式。在插件库中搜索markdown即可找到该插件,然后点击安装后重新加载。下面是 Markdown Preview Enhanced 的官方网站:
写完后Ctrl+S保存你的文章(或点击vscode左上角“文件”,然后“保存”),关闭vscode。
十二、更新main分支
1.清除缓存(可跳过)
hexo clean
此命令用于清除缓存文件 (db.json) 和已生成的静态文件 (public)。
在某些情况(尤其是更换主题后),如果发现你对站点的更改无论如何也不生效,可能需要运行该命令。如果进行了多次生成,为了避免受错误缓存影响,最好使用 hexo clean 先清除一遍。也就是说,网站显示异常时可以执行这条命令试试。
2.生成静态文件
输入以下命令,并回车:
hexo generate
(或缩写成:hexo g )
此命令使刚刚完成写作的文章生成网站静态文件到默认设置的 public 文件夹。
3.启动本地服务器(可跳过)
此步骤用于发布前的本地预览
hexo server
(或缩写成:hexo s )
默认情况下,访问网址为: http://localhost:4000/
浏览器输入该网址就能看本地生成的博客了,但也仅仅在本地,GitHub上没有。
在cmd窗口按 Ctrl+C 中断服务器的运行,
系统提示 终止批处理操作吗(Y/N)? 输入 Y 然后回车。
4.一键部署
输入以下命令,并回车:
hexo deploy
(或缩写成:hexo d )
此命令使刚刚完成写作的文章自动生成网站静态文件,并部署到设定的仓库。
Hexo 提供了快速方便的一键部署功能,只需一条命令就能将网站部署到服务器上。在开始之前,必须先在 _config.yml 中修改参数,一个正确的部署配置中至少要有 type 参数。在我这个系列文章的第二篇第九步,我已经带大家修改过了,跟我一路走下来的朋友们不用管了,还没设置过 _config.yml 参数的新来的朋友麻烦去看一下本系列我的上篇文章哈。
只需等待一会,就可以打开你的博客地址看到新文章发布成功啦。
这一切是如何发生的?
当执行 hexo deploy 时,Hexo 会将 public 目录中的文件和目录推送至 _config.yml 中指定的远端仓库和分支中,并且完全覆盖该分支下的已有内容。
十三、更新备份hexo分支
根据我上一篇文章中对 _config.yml 文件参数的修改,上边这个部署的命令默认是对我GitHub上的主分支(也可以叫main或者master分支)进行部署更新,上篇文章说过了,我同时管理了两个分支,分别存放不同内容:
main -负责展示静态网页
hexo -备份本地hexo文件
分别运行下面三行命令,进行hexo分支更新(后面括号内为注释,无需输入)
git add -A (此命令用来添加所有文件到暂存区)
git commit -m "新增博客文章" (此命令用来提交,双引号内可自定义内容,双引号前有空格)
git push origin hexo (此命令用来推送hexo分支到Github)
第一行命令其实有三种写法:(注意第三种写法后面有个点)
git add -A
提交所有变化(就是git add --all的缩写)
git add -u
提交被修改 (modified) 和被删除 (deleted) 的文件,不包括新文件 (new)
git add .
提交新文件 (new) 和被修改 (modified) 文件,不包括被删除 (deleted) 文件
git add . :他会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除的文件。
git add -u :他仅监控已经被add的文件(即tracked file),他会将被修改的文件提交到暂存区。add -u 不会提交新文件(untracked file)。(git add --update的缩写)
git add -A :是上面两个功能的合集(git add --all的缩写)
————————————————
此注释摘自:https://blog.csdn.net/caseywei/article/details/90945295
第二行的“-m”应该是“message”的缩写,双引号内是自定义提交信息
在上一篇文章中我们对 _config.yml 的message参数设置的就是这个,你可以自定义此次部署更新的说明,比如:“x年x月x日的备份”、“第x次备份”等等都可以
关于第二行命令提交时的自定义信息,具体的用处看下图,其实相当于是个注释。
三步全部执行完后打开GitHub相应库的hexo分支里就可以看到跟刚才不一样的地方了
意味着hexo源文件更新成功,推送到了 GitHub 仓库进行了备份。
总结
每次更新博客时都可以走以下三个大步
一、写作部分
1、打开cmd进入存放博客代码文件夹
2、创建文章:
hexo n "文章标题"
3、使用vscode打开新建的.md文件编写内容
二、对main分支进行部署更新:
hexo clean (清理缓存,可选用)
hexo g (生成资源文件)
hexo d (部署到服务器)
三、对hexo分支进行部署更新:
git add -A (添加所有文件到暂存区)
git commit -m "自定义信息" (提交此次更新的信息)
git push origin hexo (推送hexo分支到Github)