陈斌彬的技术博客

Stay foolish,stay hungry

如何在不同的 Mac 上使用 Octopress 博客

img

自己搭建了 Octopress 博客之后,在公司用的时候感觉很简单,回到家里想继续玩的时候,发现对 git 掌握程度还是不够,以为简单的 clone 下就 OK 了,后来发现直接 clone 下来的文件只有一部分,经过摸索,才知道是要这样解决的。

一.说明下 Octopress 目录结构

Octopress 的 git 目录下有两个 branch,sourcemaster

source分支下保存 Octopress 的源代码,我们需要用他们生成博客,该分支保存在 Octopress 本地仓库的根目录下;

master 分支下保存生成的博客内容,该分支在 Octopress 本地仓库的根目录下一个叫 _deploy 的文件夹中。该文件夹是以下划线开头的,会在执行 git push origin source 命令时被忽略,这也是为什么一个目录中能同时存在两个不同分支的文件夹的原因。

二.在本地电脑重建 Octopress 仓库

具体步骤如下:

1.clone source 分支

1
$ git clone -b source git@github.com:username/username.github.io.git octopress

特别注意: clone 的地址不能是http 而必须是 ssh,上面的的把 username 改成具体你的用户名。如果你的仓库是 username.github.com,就写成

1
$ git clone -b source git@github.com:username/username.github.com.git octopress

说明下,只克隆 git 仓库中的一个分支,用 git clone -b 指定的分支名字

运行后如果出现以下错误提示:

Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

则表示要添加密匙。执行2,如果没有错误,直接执行3。

2.创建 ssh key

执行命令:

1
$ ssh-keygen -t rsa -C "your_email@example.com"

会出现提示:

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]

这时候按回车键(Enter)继续:

Enter passphrase (empty for no passphrase): [Type a passphrase]
# Enter same passphrase again: [Type passphrase again]

会要求你输入一个密码,4位以上,记起来,后面要用到。

接下来会提示:

Your identification has been saved in /Users/you/.ssh/id_rsa.
# Your public key has been saved in /Users/you/.ssh/id_rsa.pub.
# The key fingerprint is:
# 01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db your_email@example.com

到这里就说明key已经创建成功了。

把生成的key添加到ssh-agent中 最后需要执行以下命令:

1
$ ssh-add ~/.ssh/id_rsa

然后把 id_rsa.pub 的内容复制到 github 里面的添加 Add-key 的 key 内容中。

然后验证 key 是否可用,输入

1
$ ssh -T git@github.com

出现下面情况就说明 OK 了

Hi username! You've successfully authenticated, but GitHub does not

3.clone master 分支

下面需要将 master 分支 clone 到 _deploy目录:

1
2
$ cd octopress
$ git clone git@github.com:username/username.github.io.git _deploy

4.配置环境

执行下面命令配置环境:

1
2
3
$ gem install bundler
$ bundle install
$ rake setup_github_pages

执行最后一条命令时需要你输入 github中 博客仓库地址:

Enter the read/write url for your repository
(For example, 'git@github.com:your_username/your_username.github.io)

到此所有的工作都完成了,你就可以享受在两台电脑上使用 Octopress 了!

三.细节注意

1.及时提交本地修改

每次在本地做完修改以后,都要及时提交,分别执行以下命令:

1
2
$ rake generate
$ rake deploy             # update the remote master branch

第一条命令会使用本地的修改生成最新的 blog 网站,并且生成的 blog 会存放到 Octopress 根目录下的 public/ 目录下;

第二条命令主要做了两件事:

  • generate 命令生成在 public/ 目录下的内容覆盖 _deploy/ 目录下内容;

  • _deploy/ 目录下的修改 addcommitgit,并 pushgitmaster 分支。

最后把 source 分支中做的修改提交到 git 中, 执行以下命令:

1
2
3
$ git add .
$ git commit -am "Some comment here."
$ git push origin source  # update the remote source branch 

2.修改前先更新到最新版本

为了以防万一,在本地做任何修改前都要先做更新,可以执行以下命令分别更新 sourcemaster分支:

1
2
3
4
$ cd octopress
$ git pull origin source  # update the local source branch
$ cd ./_deploy
$ git pull origin master  # update the local master branch

参考