hexo | 多设备管理博客
唠唠闲话
平时主要在笔记本上写博客,但有时笔记本没带回宿舍,这时就要用宿舍电脑来更新博客了。我们知道, Git + Github 可以实现多平台管理编程项目,而博客的处理方法完全类似。
参考链接
CSDN:hexo 多终端同步和管理。
实现原理
原理:把博客源码提交到 GitHub 存储库,使用 git 进行不同终端的本地库同步。
有两种不同的方法:
- 创建仓库:需要在 GitHub 上创建一个用于存储源码的库,建议最好选择
private
不要公开,除非你博客的所有内容打算完全公开。 - 创建分支:不新建仓库,将源码放在博客界面所在的仓库的另一个分支中。
注:第二种方法把博客源码和部署代码放在同一个仓库,虽然方便链管理,但缺陷很多:比如 Github pages 只能使用公开仓库,这意味着源码也将公开;如果博客上设置加密功能,源码公开后加密毫无意义。所以教程只介绍第一种方法。
过程步骤
新建私人仓库
在 GitHub 上创建私人仓库,用于存储源码,注意不要添加 Markdown 文件。
.gitignore
打开博客目录,目录下有一个 .gitignore
文件,没有就自己创建一个,该文件用于忽略指定的文件不进行同步,默认的配置内容如下:
1 | .DS_Store |
忽略内容说明:
public/
存放用于部署的网站文件,每次输入hexo g
就能生成node_modules/
存放博客插件,文件较大,npm
安装的插件一般在这里
仓库及链接
- 新建本地仓库
1
2
3
4# 进入博客主目录
git init # 初始化仓库
git add . # 添加所有文件
git commit -m "initialize" # 提交修改
注:
.gitignore
确保了冗余文件被 git 自动忽略。
- 连接远程仓库
1
2
3
4# 初始化本地仓库
git remote add origin <git 源码仓库地址> # 连接远端
git remote -v # 查看连接
git push -u origin master # 提交修改
注:相关 Git 语法参考 Git 保姆级指南 | 常用命令与实战技巧
新设备同步方法
- 在新设备上安装 git、nodejs 和 hexo
- 新建博客目录,输入
hexo init
初始化 git clone <git 源码仓库地址>
克隆上一步的仓库- 将克隆下来的文件合并到博客目录
到这里新设备就同步好了,但由于 node_modules/
目录被 .gitignore
忽略,还注意下边问题。
关于 gitignore 的问题
主题安装方式
hexo 5.0.0 版本开始,支持两种方法安装主题,例如:
npm i hexo-theme-butterfly # 使用 npm
git clone <主题 git 仓库 > themes/<主题名>
前者的主题安装目录为 node_modules/
,不方便被 git 记录。所以如果多设备同步博客,主题安装要用后一种方法。
注:由于 git 不允许嵌套仓库, 用
git clone
下载主题后要将仓库内的.git
文件删除。
插件安装问题
npm
安装的插件在 node_modules/
目录下,新设备中需要重新安装。
解决方法:
- 进入博客目录,输入
code hexo-package.sh
新建 bash 文件 - 写入新安装的插件信息
- 在新设备中输入
bash hexo-package.sh
安装相应插件
例如,目前我的 hexo-package.sh
内容为:
1 | ### 使用 bash hexo-package-sh 运行本文件,快速下载插件 |
注:每次安装新插件时,也在
hexo-package.sh
中写入相应插件信息。
插件修改问题
大多数插件安装后不需要修改,用上一步的方法就够了。但一些插件,比如 hexo-render-kramed
安装后,还要修改其中的文件 renderer.js
。由于该文件不被 git 记录,新设备不会同步修改内容。
解决方法:用 -f
参数,让 git add
添加被 .gitignore
忽略的文件,例如:
1 | git add node_modules/hexo-render-kramed/ -f |