使用git分支保存hexo博客源码到github

hexo是当前最火的静态博客框架,支持Markdown格式文章编辑并自动生成对应的静态网页,简单高效使人爱不释手。 使用hexo写博客的流程一般是,html

  1. 经过hexo new post_name命令,会自动在source/_post目录下生成一个待写的post_name.md文件
  2. 编写完该md文件后,用hexo generate编译生成对应的HTML文件
  3. 发布以前,能够用hexo s本地预览,而后经过hexo deploy发布到远程仓库的master分支,而后你的我的站点就能看到刚才新加的文章了

困扰

然而,使用过hexo搭建我的博客的朋友们想必都会遇到博客源码保存的问题。即远程仓库只会保存hexo发布后的静态HTML文件,你的博客md源文件、主题配置等还在本地,一旦电脑磁盘坏了或者换了电脑,就没法在以前仓库的基础上继续写博客。针对此问题,有很多博主会在github上单独另起一个repository来专门保存博客源文件,每次发布完新文章,须要手动地将source/post下的md文件上传到源文件对应的repository,确实也能解决问题,但总归是麻烦。后来偶然看到聪明的网友借助git分支来巧妙地实现用同一个仓库保存静态网页和博客源码,本身试了下确实很赞,故总结之。node

解决办法

新建git分支

因Github Page要求使用master分支做为发布网站的源代码,咱们只能用master分支来保存hexo生成的静态网页,对于博客源码,能够新建一个source分支来存储。在github上打开Pages对应的仓库,也就是以"username.github.io"命名的仓库,而后创建一个source分支,以下图:git

create_branch

由于我已经建立过source分支,故下方会显示目前该仓库上有master和source两个分支。其中source分支显示打钩,表示当前仓库的默认分支已是source而不是master了,下面会讲。github

更改仓库的默认分支

github上的仓库初始都会有个master分支,也就是默认分支。对于一个仓库project_name,当咱们经过git clone https://github.com/sherlockyb/project_name.git下载代码时,实际拉取的是默认分支master对应的代码。而咱们用hexo写博客时,一般是与md源文件打交道,对于deploy生成的master分支代码并不须要咱们关注,所以可将仓库的默认分支改成保存源码的source分支,这样经过git clone拉取的就是source分支代码了。shell

在仓库的主页面,经过Settings -> Branchs,能够看到Default branch的Tab,显示的默认分支是master,能够勾选source,而后update便可将默认分支设置为source,以下图:npm

switch_default_branch

将本地hexo目录与远程仓库关联

进入到本地hexo工程目录,也就是咱们一般执行hexo new post等命令的目录,执行以下操做:json

git remote add origin https://github.com/sherlockyb/sherlockyb.github.io.git

推送博客源码

将本地的md源文件、站点配置文件等推送到source分支。 由于咱们只须要保留博客源码,其余无关的文件并不但愿推送,须要确保配好了.gitignore文件,一般以下:hexo

.DS_Store
Thumbs.db
db.json
*.log
node_modules/
public/
.deploy*/

而后依次执行以下命令:框架

git add .
git commit -m 'hexo source post'
git push origin source

删除public等文件(可选)

由于source分支是从master分支新建的,初始代码实际就是master的拷贝,于是master中已有的public等deploy生成的文件也会一块儿带过来,这些都不算是博客源文件,若是你也觉着source分支还存着这些有些别扭,就能够先在本地把它删掉,而后执行:post

git add .
git commit -m 'DEL: public things which only for deploy'
git push origin source

执行完以后,你的仓库大概就是长这个样子: source_files

后续即使你再发布博客时,deploy生成public文件,在提交博客源码时,也不会将其带上去,由于有.gitignore将其忽略了。

新环境

假设咱们换电脑了,要在新环境继续在原有仓库基础上撸文章,此时经过git clone将博客源码拉到本地,而后安装、初始化hexo就能搞定:

git clone https://github.com/sherlockyb/sherlockyb.github.io.git sherlockyb
cd sherlockyb
npm install hexo
npm install hexo-deployer-git -save

// hexo环境配置好后,继续像以前同样
hexo new post_name
...

注意事项

确保hexo deploy推送的是master分支,hexo目录下的_config.yml文件一般会配置deploy推送的目标地址,这个通常在最初使用hexo时,就会配置为master,不用改动:

# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
  type: git
  repo: https://github.com/sherlockyb/sherlockyb.github.io.git
  branch: master

同步更新到原文

相关文章
相关标签/搜索