0%

Hexo博客迁移到其他电脑

备份原文件

需要转移的文件有:

文件(夹) 说明
scaffolds/ 博客文章模板
source/ 所有的博客文章
themes/ 网站主题
.gitignore push时需忽略的文件
_config.yml 站点配置文件
package.json 依赖包的名称和版本号

由于配置文件和主题文件需要经常更改,采用github创建博客分支的方式进行备份。

创建分支

克隆github上上生成的静态文件到hexo文件夹中

1
git clone https://github.com/yourname/xxxx.github.io.git hexo

克隆后将除.git文件外其他所有文件删除。主要是为了得到版本管理文件夹.git。
.git文件为隐藏文件,可直接将可见文件全部删除

将备份的原文件复制到此文件夹。若文件夹是从github克隆,则需要删除主题文件中的版本控制文件夹,以next主题为例:

1
$ rm -rf thems/next/.git*

创建名为hexo的分支

1
$ git checkout -b hexo

保存所有文件到暂存区
1
$ git add --all

提交变更
1
$ git commit -m "hexo-2"

提交变更时报错:

根据提示配置。

推送分支到github,并用—set-upstream与origin创建关联,将hexo设置为默认分支

1
$ git push --set-upstream origin hexo


迁移工作:

安装hexo博客必要的软件

下载安装Git客户端

安装node js

安装hexo,并进行hexo init初始化设置。hexo init后文件可以全部删除。

git下载备份的博客文件

克隆github上上生成的静态文件到文件夹中(主分支中的文件)

1
git clone https://github.com/yourname/xxxx.github.io.git

克隆后将除.git文件外其他所有文件删除。主要是为了得到版本管理文件夹.git。
.git文件为隐藏文件,可直接将可见文件全部删除

直接将分支克隆下来,替换除了.git的所有文件,即将所有可见文件复制到已删除所有可见文件的文件夹。再使用npm install安装依赖。

1
2
$ git clone -b hexo https://github.com/yourname/xxx.github.io.git
$ npm install

Github添加新电脑生成的密钥

打开git bash输入如下命令:

1
ssh-keygen -t rsa -C "xxxxx@163.com"

邮箱为GitHub注册邮箱,输入命令后直接回车,生成密钥对。根据提示找到密钥对所在位置,将id_rsa.pub公钥内容复制粘贴到Github-settings-‘SSH and GPG keys’-‘SSH keys’中。
使用ssh -T git@github.com测试公钥是否添加成功

设置个人信息

使用git config -l来查看是否设置了个人信息,若未设置,则进行如下设置:

1
2
$ git config --global user.name "yourname”
$ git config --global user.email youremail@example.com

发表文章

新建文章

1
hexo n "xxx"

注意:需要使用git push把源文件推到分支上
1
2
3
$ git add .
$ git commit -m "xxxx"
$ git push origin hexo

部署文章:

1
hexo d -g

常见报错解决:

  • 部署时,若报如下错
1
2
error: 源引用表达式 hexo 没有匹配
error: 推送一些引用到 'https://github.com/yourname/yourname.github.io.git' 失败

使用

1
$ git checkout -b hexo

来切换分支,此时还是会报错:

1
2
3
4
5
6
7
error: 推送一些引用到 'https://github.com/yourname/yourname.github.io.git' 失败

提示:更新被拒绝,因为您当前分支的最新提交落后于其对应的远程分支。

提示:再次推送前,先与远程变更合并(如 'git pull ...')。详见

提示:'git push --help' 中的 'Note about fast-forwards' 小节

使用

1
git push -u origin +hexo
  • 若报如下错
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
FATAL Something's wrong. Maybe you can find the solution here: http://hexo.io/docs/troubleshooting.html
TypeError [ERR_INVALID_ARG_TYPE]: The "mode" argument must be integer. Received an instance of Object
at copyFile (fs.js:1924:10)
at tryCatcher (/Users/yourname/hexo/node_modules/bluebird/js/release/util.js:16:23)
at ret (eval at makeNodePromisifiedEval (/usr/local/lib/node_modules/hexo/node_modules/bluebird/js/release/promisify.js:184:12), <anonymous>:13:39)
at /Users/yourname/hexo/node_modules/hexo-fs/lib/fs.js:181:12
at tryCatcher (/Users/yourname/hexo/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/Users/yourname/hexo/node_modules/bluebird/js/release/promise.js:512:31)
at Promise._settlePromise (/Users/yourname/hexo/node_modules/bluebird/js/release/promise.js:569:18)
at Promise._settlePromise0 (/Users/yourname/hexo/node_modules/bluebird/js/release/promise.js:614:10)
at Promise._settlePromises (/Users/yourname/hexo/node_modules/bluebird/js/release/promise.js:693:18)
at Promise._fulfill (/Users/yourname/hexo/node_modules/bluebird/js/release/promise.js:638:18)
at Promise._resolveCallback (/Users/yourname/hexo/node_modules/bluebird/js/release/promise.js:432:57)
at Promise._settlePromiseFromHandler (/Users/yourname/hexo/node_modules/bluebird/js/release/promise.js:524:17)
at Promise._settlePromise (/Users/yourname/hexo/node_modules/bluebird/js/release/promise.js:569:18)
at Promise._settlePromise0 (/Users/yourname/hexo/node_modules/bluebird/js/release/promise.js:614:10)
at Promise._settlePromises (/Users/yourname/hexo/node_modules/bluebird/js/release/promise.js:693:18)
at Promise._fulfill (/Users/yourname/hexo/node_modules/bluebird/js/release/promise.js:638:18)
at Promise._resolveCallback (/Users/yourname/hexo/node_modules/bluebird/js/release/promise.js:432:57)
at Promise._settlePromiseFromHandler (/Users/yourname/hexo/node_modules/bluebird/js/release/promise.js:524:17)
at Promise._settlePromise (/Users/yourname/hexo/node_modules/bluebird/js/release/promise.js:569:18)
at Promise._settlePromise0 (/Users/yourname/hexo/node_modules/bluebird/js/release/promise.js:614:10)
at Promise._settlePromises (/Users/yourname/hexo/node_modules/bluebird/js/release/promise.js:693:18)
at Promise._fulfill (/Users/yourname/hexo/node_modules/bluebird/js/release/promise.js:638:18)

Google后发现是因为node版本过高,卸载最新版node14.9,安装node12.18.3

  • 若报如下错误
1
2
3
4
5
6
7
git@github.com: Permission denied (publickey).
fatal: 无法读取远程仓库。

请确认您有正确的访问权限并且仓库存在。
FATAL Something's wrong. Maybe you can find the solution here: http://hexo.io/docs/troubleshooting.html
Error: git@github.com: Permission denied (publickey).
fatal: 无法读取远程仓库。

采取如下措施

需要将 文章.deploy_git 清干净。

1
2
hexo clean
sudo rm -rf .deploy_git

参考

【GitHub】创建Git分支将Hexo博客迁移到其它电脑

-------本文结束  感谢您的阅读-------