Hexo静态博客的文章源码和主题代码管理 - Git

原文地址:http://www.neilron.xyz/hexo-blog-source-code-management/,转载请注明!

Hexo是一个快速,简单而又强大的博客框架,我们可以使用markdown语言写作文章,hexo就可以在几秒内结合主题生成静态的网页文件。hexo搭建和配置的文章很多,这里就不再赘述了,接下来

接下来我们会做什么

  • 使用Git管理自己的文章和配置文件
  • 使用Git子模块功能配置和更新hexo主题

1 管理文章

使用Git来管理自己的文件也有很多的教程,这里简单介绍如何以自己的私人云主机为目标,建立远端仓库,方便后续子模块管理hexo主题的描述。

1.1 初始化目录

完成了hexo init之后,我们的目录下就有了一个默认的.gitignore文件,已经将自动生成的文件和node模块排除,直接进行git init,下面假定目录名为hexo_blog。

$ git init
1.2 第一次提交

完成第一次提交,因为.gitignore文件已经自动配好,所以只需要下面的代码。

$ git add .
$ git commit -m "first commit."
1.3 建立远程仓库

一个可以只需要接受push的仓库,不需要工作目录,通常使用Git的裸目录作为团队协作的一个管理中心,在本地先创建一个裸仓库。

$ git clone --bare . ../hexo_blog.git

使用scp,ftp或者其它任何方法将这个裸库放到云主机上,放到用户Home目录(~/repos/hexo_blog.git)之后可以比较方便。

1.4 增加remote

回到本地的hexo_blog目录,我们先来配置一下ssh和相应的config文件,然后设置origin的branch和本地branch之间的关联关系。

$ git remote add origin yun:repos/hexo_blog.git
$ git branch --set-upstream master origin/master

冒号之后是ssh登录后的仓库所在的相对路径。

1.5 END

测试一下,完成。

$ git pull
Already up-to-date.

2 使用子模块管理hexo主题

通常我们会需要对主题做一些修改,配置文件的修改,源码的修改,比如最近多说挂掉之后,如果你的域名恰巧已有备案,那么畅言就是一个不错的选择,但是著名的hexo主题Next目前还没有支持畅言,这就需要我们自己进行一些修改(目前已支持,文档尚未更新)。

如果直接clone仓库中的代码,就很难维护我们自己对主题做的修改,而直接复制主题的源码,又不能够跟踪主库中后续的更新。Git中有一个功能叫做子模块,正适合于我们主题源码的维护,一方面可以继续从主代码库获取更新,一方面也可以维护自己开发的代码。

下面以Next为例,说明一下配置过程。

2.1 FORK代码

首先fork一份代码到我们自己的仓库。
如下图所示,

2.2 从fork出来的仓库初始化本地子模块
$ git submodule add https://github.com/YourName/hexo-theme-next.git themes/next

这里参考了Hexo博客环境同步和Git子模块的建议,运行了git checkout master,不过在我机器上似乎初始化下来的仓库已经在master分支上了,既然可能有这个问题,可以check一下,或者执行一下这条命令。

2.3 上传本地修改

进入主题目录,按照自己站点的要求修改完成主题的配置文件。

$ cd themes/next
$ git add .
$ git commit -m "first modift config file."
$ git push

子模块相当于一个独立的git目录,上面的操作将本次对配置文件的修改推送到了第一步fork的仓库中。
ps: 因为采用了这种方式管理主题文件,配置文件就变成了开源在github上,一定要注意不要把自己的个人信息等写在主题的配置文件里。

2.4 同步主题的更新

我们需要给本地仓库增加一个新的上游,取名叫upstream,并从这里拉取更新。

$ git remote set-url upstream https://github.com/iissnan/hexo-theme-next.git
$ git pull upstream master

没有冲突自动合并完就可以push到自己Fork的仓库了,有冲突的话需要查看并完成冲突处理,然后push到自己的仓库。

2.5 END

这样就完成了主题代码的维护,总结一下,就是remote origin维护本地的代码,upstream拉取更新并合并到本地。

3 自动部署更新

Hexo自带有部署功能,使用hexo d。最常使用的还是Git方式的部署,实现的方式上就是将生成的HTML当做源码推送到远端仓库中。

3.1 初始化html的远端仓库

还是选择在源码的隔壁,配置一个html文件的远端仓库。

$ cd ~
$ mkdir hexo_blog_site.git
$ cd hexo_blog_site.git
$ git init --bare
3.2 安装插件和配置hexo站点配置文件

Git部署方式需要安装一个hexo插件hexo-deployer-git

$ npm install hexo-deployer-git --save

添加站点配置文件_config.yml

deploy:
  type: git
  repo: yun:repos/hexo_blog_site.git
  branch: master
3.3 配置git钩子

如果需要,钩子是什么?

我们需要的是在接受到push请求之后执行一个操作,将目前的工作版本checkout出来,复制到指定的目录下,需要配置的对应的钩子文件是post-receive。

#!/bin/sh
rm -r /var/www/blog.neilron.xyz/*
git --work-tree=/var/www/blog.neilron.xyz --git-dir=/home/neil/repos/ron_blog_site.git checkout -f
3.4 END

测试一下钩子是否能正常运行,可能有目标文件夹的权限等问题,使用nginx或其它服务器软件伺服根目录下的index.html等这些问题就不在这里赘述了,本文主要是想总结下关于源代码管理的一些事项。

4 在新环境完成配置

当来到一个新的机器,当然Node.jsGit两个工具是必不可少的。之后首先完成代码的clone和子模块适合的初始化。

$ git clone yun:repos/hexo_blog.git
$ git submodule init
$ git submodule update

第一次初始化之后,子模块的head可能是游离的,如果直接提交了变更就会带来问题,记得先放到master上,运行

$ cd themes/next
$ git checkout master

代码配置完成之后,执行

npm install

就可以完成package.json中所有依赖的安装了,尝试一下hexo -s,新的工作节点上可以编译出一样的静态站点了。

欢迎来访~ Ron’s Blog

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值