文章目录
  1. 1. 原理
  2. 2. 步骤

最近在实验室配上了电脑,原来有Hexo的环境的笔记本放在了宿舍作为娱乐机,以后主要就是使用实验室的台式机了,但是没有Hexo环境,有时候想发个文章也挺麻烦的,故想在台式机上配一个Hexo环境,以便在两端都可以发文章,并且主要在台式机上发布文章。

原理

由以前我们对Hexo的认识,其实hexo就是一个静态的博客,他的所有结构和内容都存储在Github(或者其他代码托管平台)上,因此,我们只需要一个能push新的结构和内容的环境即可,类似于重新搭建一个Hexo环境。

只是两台电脑对同一个库操作有一个问题,由于push上去的结构和内容是由本地的代码和post文件决定的,当电脑A本地新建一篇文章发布的时候,电脑A本地多了一篇文章,但是电脑B并不知道这次新增,虽然此时github上有新的文章,但是使用电脑B重新部署的话,这篇文章就会在github上消失,因为B没有该篇文章的本地文件,所以这里涉及一个两台电脑的本地文件同步问题。

解决有很多方法,其实无非是文件的同步。

简单点可以直接用U盘拷贝,但是稍有不便,每次还得拷贝本地文件,如果是经常切换电脑发布文章的话,这就很麻烦。

复杂点可以用Git来同步,新建一个Github repository来存储本地文件,每次要发文章前都先从github上拉取最新的本地文件,这样的好处就是随时用哪台电脑都可以发,缺点是稍微有点麻烦,每次还得推来拉去。

综合考虑,由于以后主要在一台电脑上发(台式机),所以相当于迁移过来,用U盘拷一次为宜。

最好是hexo d部署的机制中加一个新增部署方式,不改动原来结构,只新增内容上去,不过这个功能现在还没有,所以,只能麻烦的用上述的方法了。

或者,读者发现有什么更好的方法也可以评论或者邮件告诉我哦。

步骤

1.安装 node.js

2.安装 Git

3.在Git bash中输入

1
2
npm install -g hexo
hexo -version # 测试hexo是否安装成功

4.选一个hexo主目录(如D:\hexo),在该目录输入

1
hexo init

5.配置ssh key,首先

1
ls -al ~/.ssh

6.如果啥都没有,那么可以新建,有了也可以新生成ssh key

1
ssh-keygen -t rsa -C "youremail@example.com"  # 输入邮箱

7.登入自己的github,在settings下新建SSH KEY,将用户目录下的id_rsa.pub(公钥)的内容复制填入新建的SSH KEY,保存。

8.在Git bash中输入

1
ssh -T git@github.com

9.用U盘拷贝原来电脑的hexo文件夹,除了.deploygitnode_modules不用拷以外,其他都拷过来,替换现在的hexo除上两个文件夹的内容。

10.生成,部署

1
2
hexo g
hexo d

11.如果hexo d失败,并提示deployer未安装,那么安装:

1
npm install hexo-deployer-git --save

12.再生成,部署即可。如果遇到

1
bash: /dev/tty: No such device or address

错误,那么重新生成,部署一下应可解决问题。

13.当然如果原来有wordcount模块,这会遇到一个wordcount不存在的问题,原因是新机没有安装wordcount字符计数模块,用下面的命令安装:

1
npm install hexo-wordcount --save

14.如果你是同时部署到github和coding.net的话,还要记得在coding.net中新建一个SSH KEY并将id_rsa.pub内容复制进去,并运行:

1
ssh -T git@git.coding.net

成功的话会显示:

1
Hello xxx! You've connected to Coding.net via SSH successfully!

这样的话,基本就迁移成功了,以后直接在这台机器上生成,部署即可。

15.如果是采用Git来同步的话,Git上传项目的基本流程如下:

1、在github上创建项目(尽量为空,即不要有README.txt, LISENCE等)
2、使用git clone https://github.com/xxxxxxx/xxxxx.git克隆到本地
3、编辑项目
4、git add . (将改动添加到暂存区)
5、git commit -m "提交说明"
6、git push origin master 将本地更改推送到远程master分支。
这样你就完成了向远程仓库的推送。
如果在github的remote上已经有了文件,会出现错误。此时应当先pull一下,即:
git pull origin master
然后再进行:
git push origin master

16.如果在hexo d时出现很多warning: LF will be replaced by CRLF的警告的话,那是由于windows中的换行符为CRLF,而linux中换行符为LF导致的,运行下面语句:

1
$ git config --global core.autocrlf false  //禁用自动转换

即可。

错误解决与优化 | Err&Opt