文章主题 : 备份及恢复Hexo博客的详细教程

  • 备份原理: master branch: 管理Hexo生成的静态网页. HexoBackup branch: 管理Hexo 重要的本地源文件及配置文件.

前言 : 如果你利用Hexo搭建了一个静态的网站用于写博客,会发现自己利用Hexo deploy的都是Hexo generate生成的静态网页.而下面的目录并没有被push到远程仓库 !

  • 需要备份的目录及配置文件
  1. source目录 : 博客文章的.md文件.(需要备份)
  2. themes 目录 : 主题文件夹.(需要备份)
  3. scaffolds目录 : 文章的模板.(需要备份)
  4. package.json : 安装包的名称.(需要备份)
  5. .gitignore : 限定在push时哪些文件可以忽略.(需要备份)
  6. _config.yml : 站点的配置文件.(需要备份)
  • 不需要备份的目录及配置文件
  1. node_modules/ : 是安装包的目录,在执行npm install的时候会重新生成.(不需要备份)
  2. .git/ : 主题和站点都有,标志这是一个git项目.(不需要备份)
  3. publichexo generate生成的静态网页.(不需要备份)
  4. .deploy_git : 同3,hexo g也会生成.(不需要备份)
  5. db.json : 配置文件.(不需要备份)
  • 注 : 不需要拷贝的文件正是.gitignore中所忽略的哟 !

备份

  1. 创建GitHub仓库Username.github.io如果同名仓库之前已经创建,请将之前的仓库改名,新建的仓库必须是Username.github.io.
  2. Username.github.io仓库中创建一个新的分支HexoBackup.(此时的默认分支是: master)
  3. 在该仓库中的Setting中将HexoBackup修改为为默认分支.
  4. 将刚刚创建的新仓库clone至本地后将之前你存放Hexo bolg文件夹中的_config.yml,themes/,source/,scaffolds/,package.json,.gitignore复制至你所clone下来的Username.github.io文件夹中.
  5. themes/theme-name/中的.git/删除,否则无法将主题文件夹push到远程分支.(易错点 : 详情见文章最后的注意事项)
  6. Username.github.io文件夹执行npm installnpm install hexo-deployer-git(注意: 此时在该文件内的分支名应该显示为:HexoBackup).
  7. 通过执行git add .,git commit -m "A description of the information submitted",git push origin HexoBackup来提交Hexo bolg网站的源文件.
  8. 如果更新博客文章后可以通过执行hexo g -d生成静态网页部署到Github上.

更新( 在本地对博客修改: 包括修改主题样式,发布新文章等.. )

  • 以下两个步骤没有严格的顺序,小伙伴们随心所欲呗 ~
  1. 首先执行hexo g -d生成静态网页部署至Github上.
  2. 其次依次执行git add .,git commit -m "",git push origin HexoBackup来提交Hexo bolg网站源文件.

恢复 ( 重装电脑后,或者在其它电脑上想修改自己的博客.. )

  1. 安装git.
  2. 安装Nodejsnpm.
  3. 将博客仓库clone到本地.
  4. 在文件夹内执行命令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 ..详情见下述参考的博客文章哟 (っ•̀ω•́)っ✎⁾⁾