备份Hexo源文件到Github

上次重装系统后重新部署的Hexo,好麻烦。痛定思痛,决定以后要养成备份的好习惯。去网上找了找备份 Hexo 源文件的方法,备份到 Github 这个还是比较方便靠谱的,所以记录一下。

思路

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

如图:

流程

  1. 在 Github 创建一个新仓库;
  2. 仓库创建两个分支:master 与 hexo;
  3. 设置 hexo 为默认分支(因为我们只需要手动管理这个分支上的 Hexo 网站文件);
  4. 拷贝这个仓库到本地;
  5. 拷贝后的本地文件夹下有一个.git文件夹(默认隐藏),复制它,粘贴到其他文件夹。一会还要粘回来。
  6. 在本地文件夹下通过 Git bash 依次执行 npm install hexohexo initnpm installnpm install hexo-deployer-git(此时当前分支应显示为 hexo);
  7. 将刚才复制的.git文件夹黏贴回来覆盖本地文件夹中的.git文件夹;
  8. 修改_config.yml 中的 deploy 参数,branch: master
  9. 依次执行 git 命令,推送本地文件夹下的文件到 Github 仓库(推送原文件到 hexo 分支);
  10. 执行 hexo g -d 生成网站并部署到 GitHub 上(生成网站静态文件并推送到 master 分支)。

常见问题:

前四步的目的是,在 github 上建立一个新的仓库,并且把目录同步到本地(这时同步到本地的文件夹可能只有一个 readme.md,或者是个空文件夹,但是有一个隐藏的. git 文件夹。clone 一个空仓库的目的是要通过 git 建立存放本地环境的文件夹)。


执行第6步的时候,Hexo 会生成一个新的.git文件夹,并且覆盖了上文提到的.git文件夹。这会导致没法 push 到 hexo 分支(第七步没法执行)。所以要在 hexo init 前复制.git文件夹 。在完成 hexo init 后再黏贴回来覆盖新生成的.git文件夹。


问: 在完成第一次 push 到远程 hexo 分支后需要切换到本地的 master 分支,然后 hexo g -d 吗?然后以后需要修改的话再切换到本地 hexo 分支?

答: 不需要。所有操作只需要在 hexo 分支下进行就可以了,hexo g -d 会将编译生成的静态网页提交到_config.yml 文件里面指定的分支。我们已经提前设置_config.yml 文件为branch: master,所以会默认推送静态文件到master分支。


问: 当我 push 本地文件夹到远程 hexo 分支的时候,推送的是网站原始文件,push 的记录中会不会包含博客编译后的静态网页?

答: 不会。hexo 分支是用来对必须的网站原始文件进行版本控制,而 master 是用来放置编译后部署的静态网页。所以,在默认分支为 hexo 下,你每次 push 所记录的是网站所必须的原始文件,不会包含编译之后的网页文件。
你可以看下用 hexo 搭建博客的原始文件,生成的.gitignore 文件已经把 public/.deploy*/ 这两个文件夹都忽略了(这两个文件就是用来放置编译后的静态网页的)。


参考:知乎 - 使用 hexo,如果换了电脑怎么更新博客