0%

多主机同步更新blog

写在前面

最近换了主机,需要在多地同步更新blog,找到了办法,记录一下

需要使用到GitHub

原文地址

1. hexo blog目录结构

image-20240912175916838

文件夹 说明 是否需要上传github
node_modules hexo需要的模块,就是一些基础的npm安装模块,比如一些美化插件,在执行npm install的时候会重新生成 不需要
themes 主题文件 需要
public hexo g命令执行后生成的静态页面文件 不需要
packages.json 记录了hexo需要的包的信息,之后换电脑了npm根据这个信息来安装hexo环境 需要
_config.yml 全局配置文件,这个不用多说了吧 需要
.gitignore hexo生成的默认的.gitignore模块 需要
scaffolds 文章的模板 需要
.deploy_git hexo g自动生成的 不需要

其中需要上传到GitHub的有themespackages.json_config.yml、.gitignorescaffolds

hexo上传到仓库,即main分支的,其实就是这里的public文件夹

2. 同步原理

主要思路是利用git分支来实现hexo的同步。

hexo生成的静态页面文件默认放在master分支上,这是由_config.yml配置文件所决定的

你可以在全局配置文件_config.yml中找到这么一段

1
2
3
4
5
6
# Deployment
## Docs: https://hexo.io/docs/one-command-deployment
deploy:
type: git
repo: git@github.com:username/username.github.io.git
branch: main

因此每当我们执行hexo d的时候,hexo都会帮我们把生成好的静态页面文件推到main分支上。

但是执行hexo d 对应的分支和默认分支是没有关系的,因为这是由配置文件决定的,配置文件写的哪个分支就是哪个分支。

因此,hexo生成的静态博客文件默认放在main分支上。hexo的源文件(部署环境文件)可以都放在src分支上(可以新创建一个src分支)。然后把src分支设置成默认分支。有小伙伴可能会担心默认分支的改变会不会影响到原来的网页的正常显示,其实如果是用GitHub Pages对博客进行托管的话也很简单,第一次搭建博客默认使用main分支作为页面。在下图所示的设置里可以找到。如果不小心搞错了只要把分支设置成静态页面对应的分支就好了。

img

src分支设置成默认分支,用来存放源文件,main分支依然存放静态文件。在老电脑上,我们需要把必要的源文件pushsrc分支。换新电脑时,直接git clone 仓库地址此时会从src分支下载源文件,剩下的就是安装hexo环境,在新电脑上就可以重新生成静态页面了,并且因为配置文件clone下来,deploy配置依旧是main分支,所以在新电脑上执行hexo d还是会把更新过后的静态文件推送到main分支上。

由于main分支和src分支实际上是相互独立的两个普通的分支,所以我们源文件和静态页面的更新也是相互独立的,故而需要手动分别执行git add . git commit git push来更新源文件,然后执行hexo d更新静态页面。

3. 同步操作

3.1 旧主机的操作

GitHub对应的repo新建一个src分支,clone下来,并修剪文件结构,只留下上面提到的需要的文件和文件夹,并同步更新.gitignore

之后将这个分支pushrepo

src分支设置为repo的默认分支

3.2 新主机的操作

clone新建的src分支

安装对应的nodejs以及npm

在对应的username.github.io文件夹下执行npm install -gnpm install -g hexonpm install -g hexo-deployer-git

上面步骤中,npm -g install其实就是读取了packages.json里面的信息,自动安装依赖

-------------本文结束感谢您的阅读-------------

本文标题:多主机同步更新blog

文章作者:笑清

发布时间:2024年09月12日 - 12:09

最后更新:2024年09月12日 - 18:09

原始链接:https://tsubaki-01.github.io/2024/09/12/%E5%A4%9A%E4%B8%BB%E6%9C%BA%E5%90%8C%E6%AD%A5%E6%9B%B4%E6%96%B0blog/

许可协议: 转载请保留原文链接及作者。