换了一台机器 (Legion Y),之前的surface留着做笔记本,不跑东西了。但是由于开学之后事情比较多,一直没有迁移博客。这两天稍闲下来,把这事情做了。我对CS的东西以前不感兴趣也不了解(比如说不知道nodejs是啥),所以这事情做得很不求甚解、不干净(GitHub报了一堆dependabot alerts),不过我要求也不高,现在在新电脑上能继续写,这就挺好。现在把这个过程记录下来。

我是照着这里做的。首先在GitHub新建一个hexo分支,然后设为default。我们的打算是,用hexo来存放(deploy前的)网页原始文件,用之前的master分支存放生成的静态网页。为了实现这个目的,我们把以hexo为默认分支的repo给clone到本地,把除了.git文件夹之外的部分删光,然后把本地的博客源文件里面.deploy_git以外的部分全复制过来。

注意,如果你之前克隆过theme中的主题文件,那么应该把主题文件中的 .git文件夹删掉,因为git不能嵌套上传,最好是显示隐藏文件,检查一下有没有,否则上传的时候会出错,导致你的主题文件无法上传,这样你的配置在别的电脑上就用不了了。

这段我当时给忽略了,结果搞出问题,我不得不用个硬盘把theme文件给拷到新电脑上。

新电脑的话,

  • 安装git
1
sudo apt-get install git  
  • 设置git全局邮箱和用户名
1
2
git config --global user.name "yourgithubname"  
git config --global user.email "yourgithubemail"  
  • 设置ssh key
1
2
3
4
5
ssh-keygen -t rsa -C "youremail"  
#生成后填到github和coding上(有coding平台的话)  
#验证是否成功  
ssh -T git@github.com  
ssh -T git@git.coding.net #(有coding平台的话)  
  • 安装nodejs
1
2
sudo apt-get install nodejs  
sudo apt-get install npm  
  • 安装hexo
1
sudo npm install hexo-cli -g  

但是已经不需要初始化了,

直接在任意文件夹下,

1
git clone git@………………  

然后进入克隆到的文件夹:

1
2
3
cd xxx.github.io  
npm install  
npm install hexo-deployer-git --save  

生成,部署:

1
2
hexo g  
hexo d  

然后最好定期sync一下repo里面的hexo部分:

Tips:

  1. 不要忘了,每次写完最好都把源文件上传一下
1
2
3
git add .  
git commit –m "xxxx"  
git push   
  1. 如果是在已经编辑过的电脑上,已经有clone文件夹了,那么,每次只要和远端同步一下就行了
1
git pull  

弄好之后,我又遇到一个问题,就是数学公式显示的问题。我是从这里解决的。数学公式的显示出错主要就是markdown渲染器的问题,得先换掉默认的那个渲染器:

1
2
npm uninstall hexo-renderer-marked --save  
npm install hexo-renderer-kramed --save  

然后解决语义冲突的事情(例如,将_或*识别为斜体语法)。找到node_modules/kramed/lib/rules/inline.js文件,将inline变量改为

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
var inline = {  
  // escape: /^\\([\\`*{}\[\]()#$+\-.!_>])/, 第 11 行, 将其修改为  
  escape: /^\\([`*\[\]()#$+\-.!_>])/,  
  autolink: /^<([^ >]+(@|:\/)[^ >]+)>/,  
  url: noop,  
  html: /^<!--[\s\S]*?-->|^<(\w+(?!:\/|[^\w\s@]*@)\b)*?(?:"[^"]*"|'[^']*'|[^'">])*?>([\s\S]*?)?<\/\1>|^<(\w+(?!:\/|[^\w\s@]*@)\b)(?:"[^"]*"|'[^']*'|[^'">])*?>/,  
  link: /^!?\[(inside)\]\(href\)/,  
  reflink: /^!?\[(inside)\]\s*\[([^\]]*)\]/,  
  nolink: /^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,  
  reffn: /^!?\[\^(inside)\]/,  
  strong: /^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,  
  // em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,  20 行,将其修改为   
  em: /^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,  
  code: /^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,  
  br: /^ {2,}\n(?!\s*$)/,  
  del: noop,  
  text: /^[\s\S]+?(?=[\\<!\[_*`$]| {2,}\n|$)/,  
  math: /^\$\$\s*([\s\S]*?[^\$])\s*\$\$(?!\$)/,  
};  

即可(虽然实际上只改了两行)。

然后为了让新设定生效,需要hexo clean一下,然后hexo g -d部署即可。