唠唠闲话

平时主要在笔记本上写博客,但有时笔记本没带回宿舍,这时就要用宿舍电脑来更新博客了。我们知道, Git + Github 可以实现多平台管理编程项目,而博客的处理方法完全类似。

参考链接
CSDN:hexo 多终端同步和管理

实现原理

原理:把博客源码提交到 GitHub 存储库,使用 git 进行不同终端的本地库同步。
有两种不同的方法:

  • 创建仓库:需要在 GitHub 上创建一个用于存储源码的库,建议最好选择 private 不要公开,除非你博客的所有内容打算完全公开。
  • 创建分支:不新建仓库,将源码放在博客界面所在的仓库的另一个分支中。

注:第二种方法把博客源码和部署代码放在同一个仓库,虽然方便链管理,但缺陷很多:比如 Github pages 只能使用公开仓库,这意味着源码也将公开;如果博客上设置加密功能,源码公开后加密毫无意义。所以教程只介绍第一种方法。

过程步骤

新建私人仓库

在 GitHub 上创建私人仓库,用于存储源码,注意不要添加 Markdown 文件。

.gitignore

打开博客目录,目录下有一个 .gitignore 文件,没有就自己创建一个,该文件用于忽略指定的文件不进行同步,默认的配置内容如下:

1
2
3
4
5
6
7
.DS_Store
Thumbs.db
db.json
*.log
node_modules/
public/
.deploy*/

忽略内容说明:

  • public/ 存放用于部署的网站文件,每次输入 hexo g 就能生成
  • node_modules/ 存放博客插件,文件较大, npm 安装的插件一般在这里

仓库及链接

  1. 新建本地仓库
    1
    2
    3
    4
    # 进入博客主目录
    git init # 初始化仓库
    git add . # 添加所有文件
    git commit -m "initialize" # 提交修改

注:.gitignore 确保了冗余文件被 git 自动忽略。

  1. 连接远程仓库
    1
    2
    3
    4
    # 初始化本地仓库
    git remote add origin <git 源码仓库地址> # 连接远端
    git remote -v # 查看连接
    git push -u origin master # 提交修改

注:相关 Git 语法参考 Git 保姆级指南 | 常用命令与实战技巧

新设备同步方法

  1. 在新设备上安装 git、nodejs 和 hexo
  2. 新建博客目录,输入 hexo init 初始化
  3. git clone <git 源码仓库地址> 克隆上一步的仓库
  4. 将克隆下来的文件合并到博客目录

到这里新设备就同步好了,但由于 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/ 目录下,新设备中需要重新安装。

解决方法:

  1. 进入博客目录,输入 code hexo-package.sh 新建 bash 文件
  2. 写入新安装的插件信息
  3. 在新设备中输入 bash hexo-package.sh 安装相应插件

例如,目前我的 hexo-package.sh 内容为:

1
2
3
4
5
6
7
8
9
10
11
### 使用 bash hexo-package-sh 运行本文件,快速下载插件

### 以下插件只在主题刚开始使用时用到
# npm install hexo-renderer-pug hexo-renderer-stylus # butterfly 渲染工具
# cnpm install --save hexo-deployer-git # Git 部署工具

### 音乐,密码,搜索功能
npm install aplayer # 音乐功能
npm install --save hexo-tag-aplayer # 音乐功能
npm install --save hexo-blog-encrypt # 文章加密
npm install hexo-generator-search --save # 搜索功能

注:每次安装新插件时,也在 hexo-package.sh 中写入相应插件信息。

插件修改问题

大多数插件安装后不需要修改,用上一步的方法就够了。但一些插件,比如 hexo-render-kramed 安装后,还要修改其中的文件 renderer.js。由于该文件不被 git 记录,新设备不会同步修改内容。

解决方法:用 -f 参数,让 git add 添加被 .gitignore 忽略的文件,例如:

1
git add node_modules/hexo-render-kramed/ -f