写在前面
最近换了主机,需要在多地同步更新blog,找到了办法,记录一下
需要使用到GitHub
1. hexo blog目录结构
文件夹 | 说明 | 是否需要上传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
的有themes
、packages.json
、_config.yml
、.gitignore
、scaffolds
hexo
上传到仓库,即main分支的,其实就是这里的public文件夹
2. 同步原理
主要思路是利用git分支来实现hexo
的同步。
hexo
生成的静态页面文件默认放在master分支上,这是由_config.yml
配置文件所决定的
你可以在全局配置文件_config.yml
中找到这么一段
1 | # Deployment |
因此每当我们执行hexo d
的时候,hexo
都会帮我们把生成好的静态页面文件推到main
分支上。
但是执行hexo d
对应的分支和默认分支是没有关系的,因为这是由配置文件决定的,配置文件写的哪个分支就是哪个分支。
因此,hexo
生成的静态博客文件默认放在main
分支上。hexo
的源文件(部署环境文件)可以都放在src
分支上(可以新创建一个src
分支)。然后把src
分支设置成默认分支。有小伙伴可能会担心默认分支的改变会不会影响到原来的网页的正常显示,其实如果是用GitHub Pages
对博客进行托管的话也很简单,第一次搭建博客默认使用main分支作为页面。在下图所示的设置里可以找到。如果不小心搞错了只要把分支设置成静态页面对应的分支就好了。
把src
分支设置成默认分支,用来存放源文件,main
分支依然存放静态文件。在老电脑上,我们需要把必要的源文件push
到src
分支。换新电脑时,直接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
。
之后将这个分支push
到repo
将src
分支设置为repo
的默认分支
3.2 新主机的操作
clone
新建的src
分支
安装对应的nodejs
以及npm
在对应的username.github.io
文件夹下执行npm install -g
、npm install -g hexo
、npm install -g hexo-deployer-git
上面步骤中,
npm -g install
其实就是读取了packages.json
里面的信息,自动安装依赖