2013-03-08
GitHub允许大家在GitHub上创建自己的博客网站或主页,而且免费,不限流量,还可以绑定自己的域名,因此利用GitHub搭建个人主页是个不错的选择。缺点是GitHub在国外,有时可能会慢一点,另外有一些技术门槛,但对于研发人员应该问题不大。
Git是一个分布式源代码版本控制管理软件,类似的源码管理软件有CVS, Subversion等,目前被广泛用于open source项目的管理。入门请看:
按照http://git-scm.com/book/en/Getting-Started-Installing-Git的说明,根据自己的电脑安装相应平台的git, 我是在mac上安装了git.
接下来需要做 first-time git setup,http://git-scm.com/book/en/Getting-Started-First-Time-Git-Setup有 git config 的详细说明.
GitHub 是一个商业公司,提供源代码托管服务,使用Git实现版本控制。GitHub网站使用Ruby on Rails编写而成。GitHub同时提供付费账户和为开源项目提供的免费账户,免费帐户托管的项目都是public的,目前非常多的open source项目都托管在GitHub。
GitHub除了提供免费源代码托管空间,还为程序员提供了一个社交平台,在GitHub有多种和别人的互动方式,可以fork别人的项目后提交pull request贡献自己的代码,可以watch某个人或某个项目,等等。
GitHub帐号可以免费注册,因此,去免费注册一个账号吧.
GitHub上托管的每个项目都有一个主页,列出项目的源文件,可读性不太好,因此,github就设计了Pages功能,允许用户自定义项目首页,用来替代默认的源码列表。所以,github Pages可以被认为是用户编写的、托管在github上的静态网页。下面是GitHub Pages 官方文档:
GitHub提供两种类型的主页(https://help.github.com/articles/user-organization-and-project-pages):
举例说明一下user pages与project pages的区别, 以我的github帐号rainzhaojy为例, 如果以user pages方式创建个人网站, 需要创建一个名为rainzhaojy.github.io
的repo, 然后在主干上(master)提交我的个人网站的页面, 这样可以通过网址 http(s)://rainzhaojy.github.io
来访问我的个人网站.
如果以project pages的方式创建个人网站, 可以创建一个任意名字的repo(譬如rain-site), 然后将我的个人网站的页面提交到分支gh-pages下, 这样可以通过网址 http(s)://rainzhaojy.github.io/rain-site
来访问我的个人网站.
user pages只有一个, project pages可以有多个, 对于个人博客而言, 两种方式都可以.
如果用户申请了自己的域名, 还可以使用CNAME文件自定义domain name, 这样访问你的域名就自动访问到github上的页面. 用户也可以自定义404页面.
GitHub Pages支持Jekyll,用户push到GitHub库的静态页面都会经过Jekyll模板引擎的处理。jekyll基于Ruby,是一种静态页面转换引擎,是模板引擎liquid的扩展。jekyll的文档:
与asp、jsp、php等动态页面语言不同的是,jekyll对模板的解析仅仅只有一次,它的目标就是将模板一次性的转化成静态网站。解析完后,所有静态页面都位于 '_site' 目录下,用户访问的每个页面都对应一个html page.
到目前为止,假设你已经完成了下面两步:
接下来通过简单几步创建一个最简单的blog, 本文以project pages为例.
有两种方式创建一个项目:
如果使用方式1,则先在github页面上创建一个repo, 然后执行如下命令将远程repo同步到本地:
$ git clone https://github.com/username/jekyll_demo.git
然后,创建一个没有父节点的分支gh-pages。因为github规定,对于project pages, 只有该分支中的页面,才会生成网页文件。(请注意, user pages是在master上)
$ git checkout --orphan gh-pages
接下来所有动作,都在分支gh-pages下完成.
在jekyll_demo目录下创建如下文件和文件夹:
jekyll_demo
|- _layouts 用于存放模板文件的目录
|- _posts 用于存放blog文章的目录
|- _config.yml jelyll的配置文件
'_config.yml'是jekyll的设置文件,具体解释参考 https://github.com/mojombo/jekyll/wiki/Configuration
在_layouts目录下创建一个default.html,在其中输入如下内容(注意:文件本身要以UTF-8 without BOM的格式保存):
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>{{ page.title }}</title>
</head>
<body>
{{ content }}
</body>
</html>
目录结构变为:
jekyll_demo
|- _layouts
|- default.html
|- _posts
|- _config.yml
进入 '_posts' 目录,创建第一篇文章。文章就是普通的文本文件,文件名假定为2013-03-09-hello-world.md(注意,文件名必须为"年-月-日-文章标题.后缀名"的格式)。Jekyll支持 md, textile, html等格式,这里使用markdown,文件内容如下:
---
layout: default
title: 你好,世界
---
Hello, this is my first post
文件内容包括2部分,第一部分为 YAML Front Matter, 第二部分是内容,内容会出现在第三步里 {{content}} 的位置。
目录结构变成:
jekyll_demo
|- _layouts
|- default.html
|- _posts
|- 2013-03-09-hello-world.md
|- _config.yml
回到根目录jekyll_demo,创建一个index.html文件,填入以下内容:
---
layout: default
title: My Blog
---
<h2>文章列表</h2>
<ul>
\{\% for post in site.posts %}
<li>{{ post.date | date:"%Y-%m-%d" }} <a href="{{ post.url }}">{{ post.title }}</a></li>
{% endfor %}
</ul>
它的Yaml文件头表示,首页使用default模板,标题为"My Blog"。然后,对所有帖子进行一个遍历。
目录结构变成:
jekyll_demo
|- _layouts
|- default.html
|- _posts
|- 2013-03-09-hello-world.md
|- _config.yml
|- index.html
现在,这个简单的Blog就可以发布到GitHub了。先把所有内容加入本地git库。
$ git add .
$ git commit -m "first post"
然后,将本地内容推送到github上。注意,下面命令中的username,要替换成你的username。
$ git remote add origin https://github.com/username/jekyll_demo.git
$ git push origin gh-pages
上传成功之后,等几分钟,访问 http://username.github.com/jekyll_demo 就可以看到Blog已经生成了.