文章主题 : 备份及恢复Hexo博客的详细教程
- 备份原理:
master branch: 管理Hexo生成的静态网页.HexoBackup branch: 管理Hexo 重要的本地源文件及配置文件.
前言 : 如果你利用Hexo搭建了一个静态的网站用于写博客,会发现自己利用Hexo deploy的都是Hexo generate生成的静态网页.而下面的目录并没有被push到远程仓库 !
- 需要备份的目录及配置文件
source目录 : 博客文章的.md文件.(需要备份)themes目录 : 主题文件夹.(需要备份)scaffolds目录 : 文章的模板.(需要备份)package.json: 安装包的名称.(需要备份).gitignore: 限定在push时哪些文件可以忽略.(需要备份)_config.yml: 站点的配置文件.(需要备份)
- 不需要备份的目录及配置文件
node_modules/: 是安装包的目录,在执行npm install的时候会重新生成.(不需要备份).git/: 主题和站点都有,标志这是一个git项目.(不需要备份)public是hexo generate生成的静态网页.(不需要备份).deploy_git: 同3,hexo g也会生成.(不需要备份)db.json: 配置文件.(不需要备份)
- 注 : 不需要拷贝的文件正是
.gitignore中所忽略的哟 !
备份
- 创建
GitHub仓库Username.github.io如果同名仓库之前已经创建,请将之前的仓库改名,新建的仓库必须是Username.github.io. - 在
Username.github.io仓库中创建一个新的分支HexoBackup.(此时的默认分支是:master) - 在该仓库中的
Setting中将HexoBackup修改为为默认分支. - 将刚刚创建的新仓库
clone至本地后将之前你存放Hexo bolg文件夹中的_config.yml,themes/,source/,scaffolds/,package.json,.gitignore复制至你所clone下来的Username.github.io文件夹中. - 将
themes/theme-name/中的.git/删除,否则无法将主题文件夹push到远程分支.(易错点 : 详情见文章最后的注意事项) - 在
Username.github.io文件夹执行npm install和npm install hexo-deployer-git(注意: 此时在该文件内的分支名应该显示为:HexoBackup). - 通过执行
git add .,git commit -m "A description of the information submitted",git push origin HexoBackup来提交Hexo bolg网站的源文件. - 如果更新博客文章后可以通过执行
hexo g -d生成静态网页部署到Github上.
更新( 在本地对博客修改: 包括修改主题样式,发布新文章等.. )
- 以下两个步骤没有严格的顺序,小伙伴们随心所欲呗 ~
- 首先执行
hexo g -d生成静态网页部署至Github上. - 其次依次执行
git add .,git commit -m "",git push origin HexoBackup来提交Hexo bolg网站源文件.
恢复 ( 重装电脑后,或者在其它电脑上想修改自己的博客.. )
- 安装
git. - 安装
Nodejs和npm. - 将博客仓库
clone到本地. - 在文件夹内执行命令
npm install hexo-cli -g,npm install,npm install hexo-deployer-git.
注意事项 ( Hexo无法备份themes主题目录中的部分theme.. )
如果想正常备份你所喜欢的
theme的话,可以在博客目录运行如下命令 :1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18$ git rm --cached themes\theme-name\
rm 'themes/theme-name'
$ git status
On branch master
Your branch is up-to-date with 'origin/HexoBackup'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
deleted: themes/theme-name
Untracked files:
(use "git add <file>..." to include in what will be committed)
themes/theme-name/
//最后再执行: `git add themes/theme-name/` 就会发现可以成功备份该主题了哟 !原因分析 : 这是因为用到了
git的子模块(git submodule)功能,既你在你的git项目里clone的他人的项目.在你的主项目的git库里,子模块只是一个HEAD指针,指向子模块的commit..详情见下述参考的博客文章哟 (っ•̀ω•́)っ✎⁾⁾