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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,784评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,745评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,702评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,229评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,245评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,376评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,798评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,471评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,655评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,485评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,535评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,235评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,793评论 3 304
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,863评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,096评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,654评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,233评论 2 341

推荐阅读更多精彩内容