来源
问题所在:
感觉自己的电脑经常会出问题,一出问题我就喜欢重装,于是开始担心了,如果哪天不小心把hexo的原始文件都删了怎么办?那不就gg了?
所以赶紧的跑去找这种情况的解决方法
解释:
- hexo:是一个静态博客生成器,根据给定的主题,负责把写好的 Markdown 文章转换成一堆 HTML + CSS + Javascript 页面。另外,hexo 还有把生成好的站点上传到 GitHub Pages 的功能。
- GitHub Pages:这是我们的网站内容(那一堆 HTML + CSS + Javascript)真正存放的地方。
原理:
hexo 是把 Markdown 转换成 HTML 的,那么首先,需要给 hexo 提供 Markdown 文件。由于,我希望打开任何一台电脑都能更新最新的容,hexo 博客的内容应该放到一个同步盘的文件夹下面,坚果云、Dropbox、OneDrive 这些都行。其次,hexo 是基于 Node.js 的,但笔记本上完全没有 Node.js 环境,所以需要安装 Node.js。还有,很多文章都会用到类似 hexo-katex 这样的插件,新电脑上也没安装,需要安装这些必须的插件。
最重要的是要告诉GitHub这个改动是我本人完成的,从而可以添加到master主分支去。这个是由SSH Key完成的。
知道了这些,那么该操作一些什么就显而易见了。
重部署
文件同步
将整一个 your_name.github.io
文件夹同步过来,里面包含的 .gitignore
等文件包含了等下要提交的文件对应哪个 repo 等的信息,还有
Hexo配置
- 安装Node.js
- 安装Git并配置Git的基础配置
- 安装Hexo
- 安装hexo的插件(之前安装过的如:主题)
GitHub配置
其实和创建的时候的过程基本相同,不过省去了repo
Setting up Git 。设置user.name和user.email
uthenticating with GitHub from Git。
生成SSH Key
1
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
将SSH Key 添加到ssh-agent
- 在Git Bash中执行如下,开启ssh-agent
1
eval "$(ssh-agent -s)"
- 在Git Bash中执行如下,开启ssh-agent
- 将SSH Key添加到ssh-agent中
1
ssh-add ~/.ssh/id_rsa
- 将SSH Key添加到ssh-agent中
将SSH Key添加到GitHub账户中
- 在Git Bash中将SSH Key拷贝出来
1
clip < ~/.ssh/id_rsa.pub
- 在Git Bash中将SSH Key拷贝出来
- 在GitHub中的Setting中将密匙这天到SSH中
- 测试SSH的链接,在Git Bash中运行
1
ssh -T git@github.com
完成
主要问题
其实就是将原来的环境生成后,再将之前电脑上的文件替换新生成的文件:
主要文件为:scaffolds, source, themes 和 _config.yml
另一种解决方法
一个分支用来存放Hexo生成的网站原始的文件,另一个分支用来存放生成的静态网页。
关于搭建的流程
- 创建仓库,
your_name.github.io
; - 创建两个分支:master 与 hexo;
- 设置hexo为默认分支(因为我们只需要手动管理这个分支上的Hexo网站文件);
- 使用
git clone git@github.com:your_name/your_name.github.io.git
拷贝仓库; - 在本地
your_name.github.io
文件夹下通过Git bash依次执行npm install hexo
、hexo init
、npm install
和npm install hexo-deployer-git
(此时当前分支应显示为hexo); - 修改_config.yml中的deploy参数,分支应为master;
- 依次执行
git add .、git commit -m "..."
、git push origin hexo
提交网站相关的文件; - 执行
hexo g -d
生成网站并部署到GitHub上。前四步的目的是,在github上建立一个新的repo,并且把目录同步到本地(这时同步到本地的文件夹可能只有一个readme.md,或者是个空文件夹,但是有一个隐藏的.git文件夹…小白一直在想为什么要clone一个空repo…原来这里是要通过git建立存放本地环境的文件夹…哭)。
执行第五步的时候,Hexo会生成一个新的.git,并且覆盖了上文提到的.git…这会导致没法push到hexo分支…正确的做法是,在hexo init前复制.git在完成hexo init后再黏贴回来覆盖新生成的.git…剩下的就按照高票答案就能完成push hexo了
关于日常的改动流程
在本地对博客进行修改(添加新博文、修改样式等等)后,通过下面的流程进行管理。
- 依次执行
git add .、git commit -m "..."
、git push origin hexo
指令将改动推送到GitHub(此时当前分支应为hexo); - 然后才执行
hexo g -d
发布网站到master分支上。
虽然两个过程顺序调转一般不会有问题,不过逻辑上这样的顺序是绝对没问题的(例如突然死机要重装了,悲催….的情况,调转顺序就有问题了)。本地资料丢失后的流程
当重装电脑之后,或者想在其他电脑上修改博客,可以使用下列步骤:- 使用
git clone git@github.com:your_name/your_name.github.io.git
拷贝仓库(默认分支为hexo); - 在本地新拷贝的http://CrazyMilk.github.io文件夹下通过Git bash依次执行下列指令:
npm install hexo
、npm install
、npm install hexo-deployer-git
(记得,不需要hexo init这条指令)
- 使用
参考