Hexo 实现多终端同步
前言
之前习惯使用学校机房写笔记,又不舍得放下自己电脑的笔记,查阅了网上资料后,就有了这一篇文章
博客主题采用了修改版本cactus主题:https://github.com/xuthus5/hexo-theme-cactus
相关概念
hexo项目的目录结构如下
1 | HEXO |
其中.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分支。
- github上切换到hexo分支,
同步分支(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/ 访问
- 安装hexo:
发布博文(PC1或者PC2)
git pull
从远程hexo分支拉取最新的环境文件到本地,可以理解为svn的更新操作。比如在公司写了博客,回家在电脑上也要写需要先执行这一步操作。- 文章写完,要发布时,需要先提交环境文件,再发布文章。按以下顺序执行命令
it add . & git commit -m "some description" & git push origin hexo -f
,最后执行hexo g -d
补充内容
文章中插入图片
- 设置站点配置
_config.yml:
将post_asset_folder: false
改为post_asset_folder: true
- 安装插件:
npm install https://github.com/CodeFalling/hexo-asset-image -- save
- 运行
hexo n "XXXXXX"
,生成XXXXX.md博文时就会在/source/_posts
目录下生成XXXXXX的文件夹,将你想在XXXXX博文中插入的照片放置到这个同名文件夹中即可,图片的命名随意。 - 添加图片:在想添加的位置写入
![](图片名字.图片格式)
,例如![](1.png)
文章加密
- 安装
npm install --save hexo-blog-encrypt
- 首先在 站点配置文件 中启用该插件:
1 | encrypt: |
- 然后在你的文章的头部添加上对应的字段,如 password, abstract, message
1 | --- |
参考资料
https://blog.csdn.net/Fitz1318/article/details/86548129
https://www.jianshu.com/p/44e211829447
https://www.jianshu.com/p/fceaf373d797