前言
之前在windows电脑上迁移过博客,但是没有记录过程,这次正好换到另一台电脑,迁移一下博客并记录一下。碰到了不少小坑~ 网上的方式各种麻烦,感觉我目前用的这种最简单粗暴。
准备
- node.js环境, git环境搭建好
- cnpm替换npm,安装hexo框架cnpm install -g hexo-cli
迁移
- 新建目录,hexo init创建博客。
- cnpm install —save hexo-deployer-git,在blog目录下安装git部署插件。
- 将原博客的下列文件复制到新博客目录中
1
2
3
4
5_config.yml
package.json (不清楚有没有用到)
scaffolds/ (不清楚有没有用到)
source/
themes/ - hexo clean && hexo g
- hexo s本地测试, 没问题就可以发布了。
遇到的问题
- 因为我原博客中添加了字数统计插件,所以第一次进行完第四步测试会报错,npm i —save hexo-wordcount在目录中添加插件解决。
- 当我首次发布到远端时,报错fatal: unable to access ‘https://github.com/silenceZheng66/silenceZheng66.github.io.git/‘: LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443,看网上说是因为设置了https代理,
但当我去掉代理也没有反应,输入以下命令则可以成功发布。
git config —global http.sslBackend “openssl” - 当解决2错误后,我注意到有另一个报错:FATAL err: Error: Spawn failed 大多是因为git进行push或者hexo d的时候改变了一些.deploy_git文件下的内容,解决办法如下:
1
2
3
4
5
6
71. 删除.deploy_git文件夹(如果没有跳过这步。)
2. 输入git config --global core.autocrlf false
然后,依次执行:
hexo clean
hexo g
hexo d
成功!
原理:1
2
3
4
5
6
7
8
9
10
11
12
131、不同操作系统下,处理行尾结束符的方法是不同的:
windows下:CRLF(表示句尾使用回车换行两个字符,即windows下的"\r\n"换行)
unix下:LF(表示句尾,只使用换行)
mac下:CR(表示只使用回车)
2、Git下处理“换行”(line ending)
core.autocrlf是git中负责处理lineending的变量,可以设置3个值:true,false,input。
(1)设置为true【config --global core.autocrlf true】
当设置成true时,这意味着你在任何时候添加(add)文件到git仓库时,git都会视为它是一个文本文件(text file)。
它将把crlf变成LF。
(2)设置为false【config --global core.autocrlf false】
当设置成false时,line endings将不做转换操作。文本文件保持原来的样子。
(3)设置为input时,添加文件git仓库时,git把crlf编程lf。当有人Check代码时还是lf方式。因此在window操作系统下,不要使用这个设置。
- 某一篇博客中可能存在”’{连着#“字符串,去掉它,或者去掉”#”.否则generate时会报错!
- github现在需要用token才能上传了,在config.yml里把url改成https://<your_token>@github.com/
/ .git,token从setting->developer tools里面申请。 (22.05.05更新)