Hexo迁移与多端同步

在家常用台式机写博客,但Hexo的环境搭建在笔记本上,遇到了多个设备同步的问题,网上找到了大佬的解决方法,参考整理了下。

其中涉及到一些Git操作的知识,可提前学习下能便于理解,参考廖雪峰老师的git教程

Hexo文件目录

1
2
3
4
5
6
7
8
9
10
11
12
HEXO
├── .deploy_git/ #部署文件夹
├── public/ #html源码,hexo g生成
├── node_modules/ #安装的模块
├── scaffolds/ #模板
├── source/ #文章源码
| └── _posts/ #文章
├── themes/ #主题
| └── butterfly/ #butterfly主题
├── .gitignore #git提交时忽略的文件
├── _config.yml #博客配置
└── package.json #应用程序数据

其中,public/文件夹和.deploy_git/文件夹内容是一样的,用来存放生成的博客静态文件,.deploy_git/文件夹是执行hexo -d时的部署到仓库的内容,由于Hexo只是静态网页,因此上传到云端的仅为生成的静态文件,源文件及Hexo还是保留到本地的;如果想要在另一个电脑上编写博客,需要先搭建相同的环境才行。

将源文件托管到云端

根据上面的思路,我们可以把需要用到的源文件上传到云端,和静态文件区分开就可以了,也能起到云端备份的作用,其中源文件主要包括source/themes/_config.ymlpackage.json等;其实除了生成的静态文件夹public/文件夹和.deploy_git/文件夹,其他的都上传都可以,在博客根目录下可以看到.gitignore文件,内容如下:

1
2
3
4
5
6
7
.DS_Store
Thumbs.db
db.json
*.log
node_modules/
public/
.deploy*/

上面.gitignore文件里设置的这些文件就是我们不需要的,如果有不想同步的文件也可以在这里自己添加。

但具体要怎么做呢,我们可以在建一个仓库储存源文件,也可以在username.github.io仓库中新建一个分支,用原来的master分支作为博客的静态文件部分,新建一个hexo分支来存储源文件部分。

  1. Gitee上将username.github.io仓库中新建一个分支,命名为hexo,并切换成主分支。
  2. 在电脑上新建一个文件夹userfile,进入文件夹右键打开Git Bash,输入git clone "自己的仓库链接"将仓库克隆到本地。
  3. 打开电脑的显示隐藏文件,删除userfile文件夹中除.git文件夹的全部文件,.git为隐藏文件须打开显示隐藏文件才能看到。
  4. Git Bash中输入git add -A把工作区的变化(包括已删除的文件)提交到暂存区。
  5. Git Bash中输入git commit -m "some descrption"将暂存区里的改动给提交到本地的版本库。
  6. Git Bash中输入git push origin hexo推送本地版本到远程hexo分支。此时刷下Gitee,如果推送成功,hexo分支的文件应该已经被清空了。
  7. 复制userfile文件夹中的.git文件夹到hexo项目根目录下。此时,hexo项目已经变成了和远程hexo分支关联的本地仓库了。userfile文件夹就没用了,删掉即可,只是用它更新下hexo分支并获取hexo分支的描述文件。
  8. 在hexo项目根目录下,右键打开Git Bash,输入git add -A把工作区的变化提交到暂存区。
  9. Git Bash中输入git commit -m "some descrption"将暂存区里的改动给提交到本地的版本库。
  10. Git Bash中输入git push origin hexo推送本地版本到远程hexo分支。此时刷下Gitee,如果推送成功,本地hexo根目录的文件应该全部同步到云端了。

至此,将本地的源文件推送到云端就完成了,接下来我们换到另一个要安装Hexo的电脑进行操作。

在新电脑上搭建Hexo环境

在上一步中,我们将原始的博客源文件保存到了云端,接下来我们在另一个电脑上将这个环境重新搭建。

  1. 首先安装Gitnode.js,安装hexo,详细参考Git安装博客搭建

  2. 新建一个要保存博客的文件夹HexoFile,进入文件夹右键打开Git Bash

  3. Git Bash中输入git clone "自己的仓库链接"将仓库文件克隆到本地。

  4. 根据packge.json安装依赖,在Git Bash中使用npm install即可根据文件内容自动安装。

    1
    2
    3
    4
    npm install                      #npm一键安装package.json里的所有依赖文件
    npm install --dependencies #只安装package.json里的dependencies(运行依赖)文件
    npm install --devDependencies #只安装package.json里的devDependencies(开发依赖)文件
    npm install -g npm-check-updates #更新依赖到最新版本
  5. 重新生成本地文件,并开启本地博客服务器,在Git Bash中输入hexo g & hexo s。如果一切正常,此时打开浏览器输入http://localhost:4000/ 已经可以看到博客正常运行了。

  6. 之后编辑博客文件,正常使用即可。

这时,已经将Hexo环境搭建到新电脑上了,但如果在两个或者多个电脑上同步操作呢?

多台电脑的同步操作

  1. Git Bash中输入git pull,将远程hexo分支拉取到本地。

  2. 修改文章后,需要先后运行一下指令

    1
    2
    3
    4
    git add .                         #将变化添加到缓存区
    git commit -m "some descrption" #将暂存区里的改动给提交到本地的版本库。
    git push origin hexo #推送本地版本到远程hexo分支
    hexo g -d #编译本地静态文件并将静态网页推送到远程master分支

参考资料:

https://www.zhihu.com/question/21193762

https://www.jianshu.com/p/fceaf373d797