Hexo 实现多终端同步

前言

之前习惯使用学校机房写笔记,又不舍得放下自己电脑的笔记,查阅了网上资料后,就有了这一篇文章

博客主题采用了修改版本cactus主题:https://github.com/xuthus5/hexo-theme-cactus

相关概念

hexo项目的目录结构如下

1
2
3
4
5
6
7
8
9
10
11
12
HEXO
├──.deploy_git/
├──node_modules/
├──public/
├──scaffolds/
├──source/
├──themes/
├──_config.yml
├──.gitignore
├──db.json
├──debug.log
└──package.json

其中.deploy_git、public两个文件夹下存放的是博客文章的静态页面,通过对比github上博客仓库的master分支可以看到master分支下面的文件结构和.deploy_git文件夹下的文件是一致的,这个应该可以判断通过hexo g -d发布到github的内容就是.deploy_git文件夹下面的文件。其余的文件夹和文件即是Hexo的主题文件、原始的博客文件等,刚在上文提到的hexo分支,存的即时这些文件。

方案原理分析

方案主要是通过维护两条git分支来实现,第一个分支是gihub上默认的master分支,用于存放发布的博文的静态页面;另外再新建一个分支,比如命名为hexo,通过此分支存放主题、原始的博客文件等等,这些文件才是不同电脑需要同步的文件;当每次修改主题或者新增博文后,先将修改的主题文件(在themes文件夹下)或者新增博客(在source文件夹下),同步到远程的hexo分支,然后在通过hexo g -d命令发布博文,也就是将新增的博文的静态页面同步到master分支。这样通过不同的分支管理不同的文件,实现了多台电脑同步更新博文的功能。

技术方案如下:

实现步骤

  • 创建分支(在github上操作)

    在Github远程创建 hexo branch,并将新的hexo branch 设置成 Default branch,替代原本的默认分支: master branch

  • 初始化分支(PC1上面操作)

    • github上切换到hexo分支,git clone仓库到本地。
    • 此时本地会多出一个username.github.io文件夹,命令行cd进去,删除除.git文件夹(如果你看不到这个文件夹,说明是隐藏了。4
    • 命令行git add -A把工作区的变化(包括已删除的文件)提交到暂存区(ps:git add .提交的变化不包括已删除的文件)。
    • 命令行git commint -m "some description"提交。
    • 命令行git push origin hexo推送到远程hexo分支。此时刷下github,如果正常操作,hexo分支应该已经被清空了。
    • 复制本地username.github.io文件夹中的.git文件夹到hexo项目根目录下。此时,hexo项目已经变成了和远程hexo分支关联的本地仓库了。而username.github.io文件夹的使命到此为止,你可以把它删掉,因为我们只是把它作为一个“中转站”的角色。以后每次发布新文章或修改网站样式文件时,git add . & git commit -m "some description" & git push origin hexo -f即可把环境文件推送到hexo分支。然后再hexo g -d发布网站并推送静态文件到master分支。
  • 同步分支(PC2上面操作)

    • 安装hexo:npm install -g hexo-cli
    • clone远程仓库到本地 git clone git@github.com:username/username.github.io.git
    • 根据packge.json安装依赖npm install && npm install hexo-deployer-git
    • 此时通过命令git g、git s即可在本地开启同步下来的博客静态页面,并通过 http://localhost:4000/ 访问
  • 发布博文(PC1或者PC2)

    • git pull从远程hexo分支拉取最新的环境文件到本地,可以理解为svn的更新操作。比如在公司写了博客,回家在电脑上也要写需要先执行这一步操作。
    • 文章写完,要发布时,需要先提交环境文件,再发布文章。按以下顺序执行命令it add . & git commit -m "some description" & git push origin hexo -f,最后执行hexo g -d

补充内容

文章中插入图片

  1. 设置站点配置_config.yml:post_asset_folder: false改为post_asset_folder: true
  2. 安装插件:npm install https://github.com/CodeFalling/hexo-asset-image -- save
  3. 运行hexo n "XXXXXX",生成XXXXX.md博文时就会在/source/_posts目录下生成XXXXXX的文件夹,将你想在XXXXX博文中插入的照片放置到这个同名文件夹中即可,图片的命名随意。
  4. 添加图片:在想添加的位置写入![](图片名字.图片格式),例如![](1.png)

文章加密

  1. 安装npm install --save hexo-blog-encrypt
  2. 首先在 站点配置文件 中启用该插件:
1
2
encrypt:
enable: true
  1. 然后在你的文章的头部添加上对应的字段,如 password, abstract, message
1
2
3
4
5
6
7
8
9
10
11
12
---
title: 文章加密
date: 2019-01-04T22:20:13.000Z
category: 教程
tags:
- 博客
- Hexo
keywords: 博客文章密码
password: TloveY
abstract: 密码:TloveY
message: 输入密码,查看文章
---

参考资料

https://blog.csdn.net/Fitz1318/article/details/86548129

https://www.jianshu.com/p/44e211829447

https://www.jianshu.com/p/fceaf373d797

https://www.dazhuanlan.com/2019/11/16/5dd00ffcb4f27/

https://www.jianshu.com/p/937bda9123da