本迁移解决方案博主亲测有效,请放心迁移,迁移过程当中若是还遇到什么问题欢迎和我交流。html
咱们常常有这样一个需求场景:须要在多台电脑间完成 Hexo 博客的撰写和发布,这就涉及到如何多台电脑同步博客的问题。node
我最近也遇到了这个问题,网上看了不少方案。目前网上大部分 hexo 多电脑同步博客方案都是新建一个开源分支去存放博客源文件,可是你会发现,这样作的话不少第三插件配置的appid、app_key等密钥信息也暴露在了公开的仓库里,存在必定的数据安全隐患。git
那有没有什么办法不暴露这些信息呢?对了,用一个私有仓库来存放博客源文件不就结了嘛。虽然 Github 的私有仓库是收费的,可是个人博客是同时部署在 Github 和 Coding 的,而 Coding 是能够新建私有仓库的。Nice,完美解决。github
当我准备写遍博客来分享(xuan yao)想到的这个解决方案时,最后仍是荣幸的发现一遍文章已经分享了这个方案,只是在搜索引擎中不太好搜出来。本着“不重复造轮子的原则”,笔者就不重写了,并且他已经写的很好了。可是有几个问题须要特别注意一下:npm
该文中删除主题的 .git 配置,若是你有多个主题文件夹的话,须要都删除(如 NexT 主题)。而后删除的命令那位笔者不当心写错了,应该是: rm -rf ./themes/next/.git/
安全
用这条命令来删除你对应主题文件夹里的.git 文件夹,注意 .git 是一个隐藏文件夹。bash
.gitignore
文件夹在 Hexo 的根目录下可能已经存在了,能够打开和该文中的忽略事项比对一下,若是同样,接着 git init
初始化 git 仓库就好;若是没有该 .gitignore
文件夹就新建一个添加相应忽略事项再 git init
初始化。hexo
这点须要特别注意,不然可能致使迁移失败:app
虽然咱们第 1 步中删除了主题的 .git 配置,第 2 步中Hexo项目根目录的 .gitignore
文件也并无忽略掉 theme
这个文件夹。可是!! NexT 主题的文件夹原来是用 git 来管理的,里面还有一个 .gitignore
文件,把 themes/next/source/lib
目录下的不少文件给忽略掉了。工具
这就致使了你上传到私有仓库时,你觉得你把 themes
文件下的全部内容都上传到仓库了,但其实 “偷偷”的把 themes/next/source/lib
目录下的不少必要的文件也忽略掉了,并无上传。而后在新电脑上拉下来的时候,hexo g
、hexo s
一预览,你会奇怪的发现:全部的 FontAwesome 相关的图标都不见了,其余的功能一切正常。
正确的作法是:在新机器上把私有仓库上的博客源文件 clone 下来后,由于还缺点原来的文件,因此应该去原来机器上 themes/next/source/lib
目录下,把整个 lib 目录下的文件所有复制粘贴到新机器对应的 themes/next/source/lib
目录下,这样就能正常生成站点文件了。
注意:同理,若是你的
themes
目录下有多个主题配置文件的话,能够查看是否有.gitignore
文件,用 git 上传私有仓库时是否也忽略了一些必要资源,若是有再新电脑上对应复制过来就 OK 了。
关于这个问题的详情,能够看这:github.com/theme-next/…
在新电脑上 npm install
下载 hexo 所需的环境的时候,要切到 hexo 的根目录下,再执行 npm install
。
当你在新电脑用 npm install
下载依赖的第三插件时,因为 node 的版本、众多第三方插件、跨平台等缘由,可能有的插件会存在兼容性问题,致使下载不下来,笔者想迁移到 Mac 上就遇到兼容性问题了,fsevent
插件目前不支持 node v11+ 版本,而刚配置新电脑的 node 环境时,默认安装的是最新版的 node,须要下降 node 的版本才能下载成功。
至于如何下降 node 的版本,其实你不用删除,有一个叫 nvm
(Node Version Manager)的工具,专门用来管理多个版本的 node 环境的,你能够下载多个版本的 node 存在你的机器中,用 nvm
的命令行就能够实现不一样版本 node 环境的随意切换,很是方便。
好,当你在新的电脑上写完博客,本地预览也没问题,准备用 hexo d 部署到 Github 和 Coding 上前,别忘了把新电脑的 SSH 公钥配置到 Github 和 Coding 上。
而后用 hexo d部署时,因为在新机器上,SSH 密钥和以前的不同,第一次尝试链接 Github 主机时会提示:
The authenticity of host 'github.com' can't be established.
Are you sure you want continue connecting?
输入 yes 就好,同理 coding 仓库也会提示,一样输入yes。至此,新电脑上写完的博客也成功同步更新到 Github 和 Coding 的仓库上了。
更新完博客后,记得 用 git push 将新电脑上改动的博客源文件也 push 到私有仓库中,实现博客源文件的同步更新。
当你在另外一台电脑上准备开始写博客前,记得把远程私有仓库的最新博客源文件拉到本地,但记得不要用 git pull
的方式,用以下两条命令:
// 将远程 git 仓库上最新的内容拉取到本地,将本地库所关联的远程库更新至最新
git fetch --all
// 强制将本地库的内容指向最新远程仓库的master分支
git reset --hard origin/master
复制代码
最后附上该篇博客的地址:
今后,你就能够在多台电脑间愉快地同步更新博客啦~
若到一台新的电脑上,只要把博客源码 clone 下来,配置好新机器的 node
、hexo
、git
环境,随时能够发车~
也欢迎到个人独立博客上查看更多的内容:最安全的 hexo 多电脑同步博客解决方案--非新建分支
2019.1.8 最新更新
: 好消息是:Github 从 2019.1.8 日起能够无偿使用私有仓库了,那你们也能够选择把博客源文件传到 Github 私有仓库上,维护起来更加方便了。