Hexo 博客迁移与多平台使用

  1. 一、在旧电脑上的操作
    1. 1.1 准备工作
  2. 二、在新电脑上的操作
    1. 2.1 安装工具
    2. 2.2 导入更换文件
      1. 2.2.1 更新文件
      2. 2.2.2 善后工作
      3. 2.2.3 图床
    3. 2.3 处理多个本地 Key

当我们 换电脑 或者需要 多台电脑维护 GitPages 博客时,可以采用以下方案执行。

一、在旧电脑上的操作

1.1 准备工作

1、在 GitHub 仓库上新建一个仓库 XXSS,用来放置博客文件目录 Hexo/ 下所有文件

2、配置 SSH Key:将本机的 id_rsa.pub 文件内容复制到 GitHub 上相应位置

3、将博客文件目录 Hexo/ 变成 Git 仓库并 push,cmd 执行

git init
git remote add origin git@github.com:XXSS.git
git add --all
git commit -m 'save file to GitHub'
git push origin master

以上就完成了。

二、在新电脑上的操作

2.1 安装工具

1、安装 git for windows

2、安装 node.js

3、配置 SSH Key:将本机的 id_rsa.pub 文件内容复制到 GitHub 上相应位置

  • 注意在生成 SSH key 的时候,一定要先确认下本机是否已存在,避免覆盖。如本地需多个 key(对应不同域名网站), 参照 2.3 章节处理

  • 验证是否配置成功:ssh -T git@github.com -i ~/.ssh/id_rsa 出现…successfully authenticated…即可

4、安装 hexo:在 cmd 执行 npm i -g hexo

5、创建博客目录:如 Hexo/,以后这里就是博客的工作目录

  • 初始化:在博客工作目录下,右键 Git Bash 中执行 hexo init

5、配置

$ git config --global user.name "liuxianan"        // 你的 github 用户名,非昵称
$ git config --global user.email  "xxx@qq.com"     // 填写你的 github 注册邮箱

注意:此时博客文件夹并不是一个 git 仓库。

以上新电脑上的基本配置已经做完了。

2.2 导入更换文件

2.2.1 更新文件

在旧电脑上时,我们已经将所有的博客目录下的文件上传到 XXSS 仓库里了,接下来就要用远程文件更新本地的文件。

目前我们的博客目录 Hexo/ 只是一个普通文件夹,下面需要将其变成 git 本地仓库:

执行如下命令:

git init
git remote add origin git@github.com:XXSS.git       // 添加目标远程仓库
git pull origin master                              // 拉取文件

这时,如果显示:Permission denied….fatal: Could not read from remote repository. 按照 2.3 章节处理。

由于我们是准备强制覆盖本地文件的,可以使用:

git fetch --all
git reset --hard origin/master

git fetch 从远程下载最新的,而不尝试合并或 rebase 任何东西。

git reset 将主分支重置为您刚刚获取的内容,–hard 选项更改工作树中的所有文件以匹配 origin/master 中的文件。

这时候我们可以检查是否全部更新完毕。

2.2.2 善后工作

我们可以执行 hexo s -g 进行本地预览,发现可能还有问题,需要进一步处理。

执行 npm install,(由于仓库有一个.gitignore 文件,里面默认是忽略掉 node_modules 文件夹的,也就是说仓库的 hexo 分支并没有存储该目录[也不需要],所以需要 install 下)。

这时候基本可以本地预览了,但是可能会报错,如: Error: Cannot find module ‘object-assign’

本着缺啥补啥的原则,直接安装它:npm i object-assign

至此,所有工作基本已经做完。

2.2.3 图床

Typora 新版本已经支持图床,在偏好设置里面:上传服务选择 PicGo(app)。这样就不用本地存储图片,可以更好的管理图片了。

2.3 处理多个本地 Key

一般情况下,我们本地只需要一个 Key 就行。但是有时候,我们的机器上会有很多的 Git Host,比如公司 GitLab、我们自己的 GitHub,我们需要用不同的 key 来区分。于是我们在生成 Key 的时候,可以命名不同的名字加以区分。

如默认的 id_rsa.pubid_rsa;还可以命名其他名字:id_rsa_mee.pubid_rsa_mee

为了让不同的 Host 区分使用不同的 SSH Key,需要做点额外配置(否则会 Permission denied):

在 ~/.ssh/ 密钥同级目录下,新建文件名为 config,写入:

# 1 github setting 
Host github.com                      
HostName github.com                  #ip 也可
User xxx                             #这里写 git config user.name
IdentityFile ~/.ssh/id_rsa

# 2 gitlab setting
Host gitlab.com                       
HostName gitlab.com
User qiangjiang
IdentityFile ~/.ssh/id_rsa_mee
  • Host : 相当于一个别名,这里可以使用任意字段或通配符。访问 ssh 的时候如果服务器地址能匹配上这里 Host 指定的值

  • HostName :真正连接的服务器地址

  • User:自定义的用户名

  • PreferredAuthentications 指定优先使用哪种方式验证,支持密码和秘钥验证方式,默认可以不写

    • publickey, password, keyboard-interactive,支持这三种
  • IdentityFile:指定本次连接使用的密钥文件

配置完保存即可。


欢迎各位看官及技术大佬前来交流指导呀,可以邮件至 jqiange@yeah.net