XiaBee's Studio.

利用git分支进行Hexo备份

字数统计: 739阅读时长: 2 min
2021/10/28

hexo博客搭建可以看这里

问题描述

博客搭建环境:hexo+gitpage,本地编写·markdown文件,通过hexo g -d渲染后上传至github repo

相较于wordpresshexo框架的博客编写基本是在本地完成,在其他机器写博客时需要备份并重新配置环境。但是nodejs环境文件很多,备份起来相当麻烦。

解决方案

大致有两种方案:

  • 创建新仓库,备份源文件
  • 创建新分支,备份源文件

创建备份

这里我们主要介绍github分支的方式:主分支用于渲染github page,分分支用于备份重要源文件。

image.png

创建新仓库的方式同理,就不介绍了(x)

在hexo根目录下创建git

最新版的hexo在初始化之后是没有.git目录的,通过_config.yml里面的deploy参数生成.deploy_git目录,并在通过该目录进行push操作。因此,我们直接在hexo根目录下创建.git目录和.gitignore并不会冲突。

image.png

创建本地git的方式有很多种,只需要将git的指向我们xxx.github.iorepo就行。

比如可以直接将xxx.github.io的整个repo克隆下来,然后复制其中的.git目录到hexo的根目录下。

创建.gitignore

常见的需要备份的文件大致有:

1
2
3
4
5
6
7
scaffolds/
source/
themes/
.git/
.gitignore
_config.yml
package.json

然而,每次筛选很麻烦,这里我们直接在hexo根目录下创建.gitignore排除剩下的不需要备份的文件。

示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
# .gitignore
.DS_Store
Thumbs.db
db.json
*.log
node_modules/
public/
.deploy*/
.git*/
themes/
!themes/archer/_config.yml
# 这里只备份主题的配置文件
.vscode/

创建分支

在刚刚创建好githexo的根目录下执行:这里以 hexo_backup 分支为例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
git branch -a
# 查看所有分支

git branch
# 查看当前使用分支

git checkout hexo_backup
# 切换到 hexo_backup 分支上,若不存在则创建该分支并切换到该分支

# git branch -d hexo_backup
# 删除本地 hexo_backup 分支

# git push origin --delete hexo_backup
# 删除远程 hexo_backup 分支

确保新分支不要与主分支重名……尽量不要取mastermain这种名字就好。

提交备份

因为之前写了.gitignore,我们可以放心大胆的将当前目录全部commit

1
2
3
4
5
6
7
8
git add .
# 添加当前目录

git commit -m "backup"
# 添加commit,引号内的内容随意

git push origin hexo_backup
# 将本地数据推送到 hexo_backup 分支中

远程仓库已有两个分支,因此必须指定分支hexo_backup,不能直接git push

image.png

此时本地分支和远程分支匹配

image.png

此时已经备份完毕了。

迁移与复原

新环境配置

1
2
npm install -g hexo-cli
hexo init

克隆备份分支

将原来的source, package.json等文件克隆到hexo根目录下

1
2
git clone -b hexo_backup git@github.com:[username]/[username].github.io.git
npm install

渲染与推送

1
2
3
hexo clean
hexo g -d
# 生成新的页面并推送至主分支

主分支利用hexo自身集成的git组件进行推送:

image.png

CATALOG
  1. 1. 问题描述
  2. 2. 解决方案
  3. 3. 创建备份
    1. 3.1. 在hexo根目录下创建git
    2. 3.2. 创建.gitignore
    3. 3.3. 创建分支
  4. 4. 提交备份
  5. 5. 迁移与复原
    1. 5.1. 新环境配置
    2. 5.2. 克隆备份分支
    3. 5.3. 渲染与推送