hexo的备份or更新

来源

问题所在:

感觉自己的电脑经常会出问题,一出问题我就喜欢重装,于是开始担心了,如果哪天不小心把hexo的原始文件都删了怎么办?那不就gg了?

所以赶紧的跑去找这种情况的解决方法

解释:

  • hexo:是一个静态博客生成器,根据给定的主题,负责把写好的 Markdown 文章转换成一堆 HTML + CSS + Javascript 页面。另外,hexo 还有把生成好的站点上传到 GitHub Pages 的功能。
  • GitHub Pages:这是我们的网站内容(那一堆 HTML + CSS + Javascript)真正存放的地方。

原理:

hexo 是把 Markdown 转换成 HTML 的,那么首先,需要给 hexo 提供 Markdown 文件。由于,我希望打开任何一台电脑都能更新最新的容,hexo 博客的内容应该放到一个同步盘的文件夹下面,坚果云、Dropbox、OneDrive 这些都行。其次,hexo 是基于 Node.js 的,但笔记本上完全没有 Node.js 环境,所以需要安装 Node.js。还有,很多文章都会用到类似 hexo-katex 这样的插件,新电脑上也没安装,需要安装这些必须的插件。

最重要的是要告诉GitHub这个改动是我本人完成的,从而可以添加到master主分支去。这个是由SSH Key完成的。

知道了这些,那么该操作一些什么就显而易见了。

重部署

文件同步

将整一个 your_name.github.io 文件夹同步过来,里面包含的 .gitignore 等文件包含了等下要提交的文件对应哪个 repo 等的信息,还有

Hexo配置

  1. 安装Node.js
  2. 安装Git并配置Git的基础配置
  3. 安装Hexo
  4. 安装hexo的插件(之前安装过的如:主题)

GitHub配置

其实和创建的时候的过程基本相同,不过省去了repo

  1. Setting up Git 。设置user.name和user.email

  2. uthenticating with GitHub from Git。

    • 生成SSH Key

      1
      ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    • 将SSH Key 添加到ssh-agent

      • 在Git Bash中执行如下,开启ssh-agent
        1
        eval "$(ssh-agent -s)"
      • 将SSH Key添加到ssh-agent中
        1
        ssh-add ~/.ssh/id_rsa
    • 将SSH Key添加到GitHub账户中

      • 在Git Bash中将SSH Key拷贝出来
        1
        clip < ~/.ssh/id_rsa.pub
      • 在GitHub中的Setting中将密匙这天到SSH中
    • 测试SSH的链接,在Git Bash中运行
      1
      ssh -T git@github.com
  3. 完成

主要问题

其实就是将原来的环境生成后,再将之前电脑上的文件替换新生成的文件:

主要文件为:scaffolds, source, themes 和 _config.yml


另一种解决方法

一个分支用来存放Hexo生成的网站原始的文件,另一个分支用来存放生成的静态网页。

关于搭建的流程

  1. 创建仓库,your_name.github.io
  2. 创建两个分支:master 与 hexo;
  3. 设置hexo为默认分支(因为我们只需要手动管理这个分支上的Hexo网站文件);
  4. 使用git clone git@github.com:your_name/your_name.github.io.git拷贝仓库;
  5. 在本地your_name.github.io文件夹下通过Git bash依次执行npm install hexohexo initnpm installnpm install hexo-deployer-git(此时当前分支应显示为hexo);
  6. 修改_config.yml中的deploy参数,分支应为master;
  7. 依次执行git add .、git commit -m "..."git push origin hexo提交网站相关的文件;
  8. 执行hexo g -d生成网站并部署到GitHub上。

    前四步的目的是,在github上建立一个新的repo,并且把目录同步到本地(这时同步到本地的文件夹可能只有一个readme.md,或者是个空文件夹,但是有一个隐藏的.git文件夹…小白一直在想为什么要clone一个空repo…原来这里是要通过git建立存放本地环境的文件夹…哭)。

    执行第五步的时候,Hexo会生成一个新的.git,并且覆盖了上文提到的.git…这会导致没法push到hexo分支…正确的做法是,在hexo init前复制.git在完成hexo init后再黏贴回来覆盖新生成的.git…剩下的就按照高票答案就能完成push hexo了

关于日常的改动流程

在本地对博客进行修改(添加新博文、修改样式等等)后,通过下面的流程进行管理。

  1. 依次执行git add .、git commit -m "..."git push origin hexo指令将改动推送到GitHub(此时当前分支应为hexo);
  2. 然后才执行hexo g -d发布网站到master分支上。
    虽然两个过程顺序调转一般不会有问题,不过逻辑上这样的顺序是绝对没问题的(例如突然死机要重装了,悲催….的情况,调转顺序就有问题了)。

    本地资料丢失后的流程

    当重装电脑之后,或者想在其他电脑上修改博客,可以使用下列步骤:
    1. 使用git clone git@github.com:your_name/your_name.github.io.git拷贝仓库(默认分支为hexo);
    2. 在本地新拷贝的http://CrazyMilk.github.io文件夹下通过Git bash依次执行下列指令:npm install hexonpm installnpm install hexo-deployer-git(记得,不需要hexo init这条指令)

参考