Github 让你拥有属于自己的博客

26 Nov 2011

git

git 是一个分布式版本控制工具(DVCS),不需要服务端软件支持(即使在地铁里也可以正常 commit),Linux 内核开发用的版本控制工具就是它。

常用的 SVN 属于集中式版本控制工具(CVCS),需要在服务端开启SVN服务,然后客户端 checkout, commit, update。

github

github 的标语是:"secure source code hosting and collaborative development"。一个基于 git 的类似 google code 的代码仓库,付费版的用户可以创建私有仓库,支持多人开发。很多项目都选择了 github 来保存代码,如 “jQuery/reddit/RoR/CakePHP/Redis” 等等。

github pages

blog 是在 pages 的基础上搭建的,创建一个用户的页面很简单,假设你的 Github 用户名为 foo

1. 新建一个仓库(repository),名称填 “foo.github.com”

2. 按照 guide 完成

 1 # 在本地新建一个文件夹 foo.github.com
 2 $ mkdir foo.github.com
 3 # 进入文件夹根目录
 4 $ cd foo.github.com
 5 # 初始化
 6 $ git init
 7 $ touch README
 8 $ git add README
 9 # 在根目录下新建一个 index.html 页面,随便写点什么
10 # 把index.html加入到仓库中
11 $ git add .
12 # 提交修改
13 $ git commit -m 'first commit'
14 # 添加 github 的分支
15 $ git remote add origin git@github.com:foo/foo.github.com.git
16 # 提交到 github 分支
17 $ git push origin master

过1分钟左右,浏览 http://foo.github.com,就可以看到刚刚创建的 index.html 文件了。

除了创建用户页面,还可以针对每个项目单独创建项目的主页

创建 blog

到这里其实已经可以写博客了,创建一个 index.html 页面,在里面列出写过的文章,点击标题进去后又是一个手动创建的 html 页。就是太麻烦了,一点都不酷。

github 当然知道这个问题,所以他们创建了jekyll模板引擎 。简单来说,就是你可以用textile 或者markdown语法来写博客,提交到 github 后,会自动转换成 html。

这里有很多网站/博客,都是基于 github 的 jekyll 模板开发的,如果觉得哪个不错,可以查看 source。

先来看看这个仓库,里面有一些特殊的文件/文件夹:

_config.yml

存储了一些设置,大部分的设置都可以通过命令行指定,但放到配置文件里更方便些

_layouts

_layouts 文件夹存放的是模板文件,文章会被渲染到这些模板里,变量指代的是文章内容

_posts

这里就是真正存放博客文章的地方了,文件命名要遵守这种格式:year-month-day-title.textile 或者 year-month-day-title.markdown

_site

这个文件夹是程序生成的,如果本地没有安装 jekyll 的话,是不会有这个文件夹的,如果想要先本地预览一下,再提交到 github,最好通过 .gitignore 把这个文件夹排除。

index.html

这个文件也有一个yaml前缀 ,可以指定使用哪个模板,标题等等,所有根文件夹下的 .html/.htm/.textile/.markdown 都会被解析。

other files/folders

上面没有列出的文件/文件夹都会被 jekyll 放到 _site 文件夹下,如 css/image/script 等等。

jekyll的安装

参考博文Jekyll 非你莫属

绑定域名

很简单,新建一个 CNAME 文本文件,在里面输入域名,如 “chxt6896.com”,然后在域名提供商里,指定该域名的 CNAME 为 “chxt6896.github.com”,搞定

添加评论功能

参考博文Disqus 我的评论我做主

参考文章

>>>jekyll wiki
>>>github blog
>>>publishing a blog with github and jekyll

后记

最后再次感谢 github 提供了这么好的服务,如果对 github 的创业历程感兴趣,可以参考这篇文章

PS

文章是转来的,第一篇引导我的文章,很有纪念意义~

后面我会详细讲一下几个关键功能实现,Category,Archive,Highlight,分页,Disqus,欢呼吧,独此一家~~~

Fork me on GitHub