利用GitHub仓库分支备份Hexo博客源文件

Hexo静态部署到托管平台很方便,考虑到异地更新并提交Hexo博客内容的需求,可以考虑通过仓库的多分支来解决。hexo部署命令生成的静态网址默认是保存在github_name/github_name.github.io的master分支上,因此,可以在原有的基础上增加一个hexo_source分支保存网址原始数据,并将这个分支设置为默认分支。如此以来,系统环境配置完成后,每次恢复和迁移文件时候只需要git clone即可获取迁移的文件了。

更改仓库的默认分支

GitHub上的仓库初始都会有个master分支,也就是默认分支。对于一个仓库project_name,当我们通过git clone https://github.com/KuiperSirius/project_name.git 下载代码时,实际拉取的是默认分支master对应的代码。而使用hexo写博客时,通常是与md源文件打交道,对于deploy生成的master分支代码并不需要我们关注,因此可将仓库的默认分支改为保存源码的source分支,这样通过git clone拉取的就是source分支代码了。

Git准备工作

通常情况下,在原Hexo托管的仓库上建立分支,并确保原仓库内已有master分支(该分支通常被用于GitHub Pages的默认绑定)。进入本地博客根目录,进行如下操作。

1
2
3
4
5
6
7
8
#git初始化
git init
#初始化完成之后,添加修改的文件,由于Hexo就自带了.gitignore文件,即需要忽略的文件,add 全部文件。
git add .
#然后commit提交
git commit -m "commit first time|描述内容"
#提交成功之后,接下来需要push到github项目地址,需要先把Hexo源文件映射到远程resposity上。
git remote add origin https://github.com/your-name/your-name.github.io.git

.gitignore文件内容

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

创建新分支

接下来的工作即为将Hexo源文件push上去,其中仓库的master上是Hexo生成博客网页的代码,而Hexo源文件是要push到一个分支上面的,进行如下操作。

1
2
3
4
5
6
7
8
9
10
#所以接下来先要在repo上新建一个叫source的分支
git branch source
#查看本地分支,并且切换到source分支。
git branch
git checkout source

#下列两步可酌情跳过
#拉取远程代码,再把刚才添加的Hexo源文件代码push到source这个分支。
git pull origin master
git push -u origin source

在Github上备份源文件

本地的博客源文件的修改就可以直接用git命令push到repo的source分支上了,通过如下命令将本地文件备份到Github上,假设目前在hexo博客的根目录下。

1
2
3
4
5
6
7
8
9
10
11
#添加修改内容到本地仓储
git add .
#提交修改内容到本地仓库
git commit -m "Backup"
git push [-f] origin source

#或者配置push,以方便后期直接git push推送
git push --set-upstream origin source
#将本地分支和分支下的内容推送到远程
git push
#注意:执行 git push --set-upstream origin source 命令之后,以后修改博客源文件代码之后,直接使用git push不用再指定分支,就可以把代码push到source分支上了。

结语及注意事项

建议先备份文件再生成博客。即先执行[git add .],[git commit -m "Date-Backup"],[git push origin source]将博客备份完成,然后执行hexo g -d发布博客。

确保hexo deploy推送的是master分支,hexo目录下的_config.yml文件通常会配置deploy推送的目标地址,这个一般在最初使用hexo时,就会配置为master,无需改动。

1
2
3
4
5
6
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
repo: https://github.com/KuiperSirius/KuiperSirius.github.io.git
branch: master

更换设备后,在配置好Hexo的环境下,把博客源文件代码克隆下来。

1
2
3
4
5
6
7
git clone ****** (Your repo address)
#博客源文件下载下来之后,默认的分支是master,需要切换到source分支。
git checkout master/source
#然后切换到博客目录依次执行以下命令
npm install hexo
npm install
npm install hexo-deployer-git --save

注: 上述操作存在不完善的地方,仍然建议使用Google Drive/One Cloud等云存储备份站点文件。themes目录以内中的主题文件夹存在的.git目录,因为一个git仓库中不能包含另一个git仓库,否则提交主题文件夹会失败,出现远程仓库无法备份theme/next主题的问题。
详见:https://github.com/iissnan/hexo-theme-next/issues/932