利用Github实现hexo多端同步

本文最后更新于:2023年8月9日 下午

网上有很多利用Github实现同步的方法,思路是差不多的,细节有些不同。

Hexo在本地和在vps上的文件是不同的东西。本地的主要是一些资源文件,包括了自己写的markdown的文章,theme主题文件等等。在执行hexo g命令后,会在public目录下生成网页的静态文件,我们用hexo d上传的文件其实就是public目录下的这些静态文件。如果执行hexo clean,那么public文件夹就会消失。实现多端同步,只要让每台电脑上都有最新的资源文件就行了。

我们只要在github上建立新的仓库(或者新建分支),将资源文件push上去就好了。在使用新的设备的时候,再将需要的文件pull下来。

主要参考下面的文章:

Hexo在多台电脑上提交和更新

利用GitHub实现Hexo博客的多端同步

1. 将hexo文件push到github仓库

下面的操作所涉及的都是已经搭建好hexo的设备(已经安装了git等必要的程序)。

首先在github上创建新的仓库,我将其命名为hexo

在已经搭建好hexo的电脑上打开文件夹,找一个位置(我的是C:\Users\dabod\Blog)打开命令窗口,clone刚刚新建的仓库到本地:

1
git clone git@github.com:username/hexo

其中username是自己的github的用户名,hexo是刚刚新建的仓库的名字。

执行完成之后得到一个hexo文件夹,进入文件夹中,仅留下.git文件夹,删除其他所有的文件。

找到我们的博客文件的原来的位置(我的是C:\Users\dabod\Blog\blog),将其中的文件全部复制到clone下来的hexo文件夹中。现在在hexo文件夹中会有一个.gitignore文件,用来忽略一些不需要的文件,表示这些类型的文件不需要git。如果没有则新建一个,内容如下:

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

如果已经clone过主题文件,那么需要把theme主题文件夹里的 .git 也删除。因为git不能嵌套上传,最好是显示隐藏文件,检查一下有没有,否则上传的时候会出错,导致主题文件无法上传,这样配置在别的电脑上就用不了了。我的主题文件是通过压缩包直接解压安装的,所以不需要执行这个步骤。

然后将新建的hexo文件夹中的内容推送到github的仓库:

1
2
3
git add .
git commit -m add_branch
git push

这里解释一下每一行命令的含义:

git add .:将当前目录下的所有文件存在暂存区;

git commit -m add_branch:将暂存区的内容添加到本地仓库中,所以push之前需要执行commit命令。其中的-m表示添加备注信息,也就是后面的add_branch,备注信息可以改成别的;-a表示设置修改文件后不需要执行git add命令,直接来提交;

git push:将本地仓库中的内容push到远程仓库中。

实际操作中发现git add .命令不能提交新增的文件(可能是git版本的原因),git add -A是可以的。所以如果后续写了文章或是修改配置或是删除文件,那么可以执行下面的操作来push:

1
2
3
git add -A
git commit -m 备注信息
git push

通过git log命令可以查看每一次提交的情况,git show+commit_id可以展示每一次提交的具体内容,这里的commit_idgit log命令里面commit后面的一长串字符,所以完整的命令如下:

1
git show 8bd4e724cf4eb0e807023ae95d86a9db2861daa7

执行hexo -d所提交的仓库是在博客文件下的_config.yml文件配置的,如下:

1
2
3
4
5
6
# Deployment
## Docs: https://hexo.io/docs/one-command-deployment
deploy:
type: git
repo: git@自己的vps的ip:/home/git/blog.git
branch: master

git push是提交到github上的hexo仓库中的,并不冲突。

这样我们在原来的设备上的操作也就完成了。

2. 在新设备上配置

首先在新设备上安装node.jsgit并且生成SSH Key,参考hexo + vps 搭建个人博客

和之前一样,将生成的SSH Key(一长串字符)添加到vps的authorized_keys文件中。由于之前已经添加过了原来的设备SSH Key,新增加的要和之前的用空行隔开。

在新设备上找到要存在博客文件的位置,然后clone仓库:

1
git clone git@github.com:username/hexo

进入文件夹,执行如下命令配置Hexo:

1
2
npm install -g hexo-cli
npm install

然后就可以执行hexo g等命令正常使用了。

每次写完博客之后,需要顺便将修改push到github仓库中,操作和上面一样。

每次转移到另一台设备的时候,先执行git pull命令就可以同步github仓库中的最新文件,然后就可以愉快地写博客了。

3. 后记

几年之前我用过git,但后来已经忘记得差不多了。在选择多端同步的方案的时候,我其实在逃避使用git,因为我觉得它很复杂,有点畏惧。不过用U盘同步实在不怎么优雅,用网盘同步也很麻烦,最终还是回到了git。在熟悉了一些基本操作之后,我发现它没有我想象的那么难,真的很好用。


利用Github实现hexo多端同步
https://www.zhouw.top/2023/02/27/利用Github实现hexo多端同步/
作者
Dabod Zhou
发布于
2023年2月27日
更新于
2023年8月9日
许可协议