作为一个程序员,要想快速提升自己,兴趣驱动地参与到 open-source 中是一个非常棒方式。本文仅是抛砖引玉,简单记录一下在 github 上进行协作开发与搭建个人博客的方式。

𝟙. 协作开发

先介绍一下你作为一个 contributor,如何参与到一个已有的项目中去。

Set Up Git

$ git config --global user.name "YOUR NAME"
$ git config --global user.email "YOUR EMAIL ADDRESS"

Fork A Repo

shadowsocks/shadowsocks-go 为例,先在这个 repo 的页面上点 “Fork”,这个 project 就会 fork 都你自己的 github 空间,然后 clone 到本地:

$ git clone https://github.com/YOUR-USERNAME/shadowsocks-go.git

下面看一下 remote 信息:

$ git remote -v
origin  https://github.com/YOUR_USERNAME/shadowsocks-go.git (fetch)
origin  https://github.com/YOUR_USERNAME/shadowsocks-go.git (push)

增加 upstream 信息

$ git remote add upstream https://github.com/shadowsocks/shadowsocks-go.git

再验证,remote 信息应该变成了这样:

$ git remote -v
origin    https://github.com/YOUR_USERNAME/shadowsocks-go.git (fetch)
origin    https://github.com/YOUR_USERNAME/shadowsocks-go.git (push)
upstream  https://github.com/shadowsocks/shadowsocks-go.git (fetch)
upstream  https://github.com/shadowsocks/shadowsocks-go.git (push)

Sync A Fork

先从 upstream 获取最新的修改

$ git fetch upstream
remote: Counting objects: 75, done.
remote: Compressing objects: 100% (53/53), done.
remote: Total 62 (delta 27), reused 44 (delta 9)
Unpacking objects: 100% (62/62), done.
From https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY
* [new branch]      master     -> upstream/master

然后将本地的 fork 切换到 master

$ git checkout master
Switched to branch 'master'

最后将 upstream 的 master 的修改 merge 到本地的 master(注:此 merge 不会 使得你本地的修改丢掉)

$ git merge upstream/master

𝟚. 个人博客搭建

再介绍一下你自己作为一个 owner,如何创建与维护一个 project。

正好 github 提供了一个非常方便的搭建网页的功能: Pages ,既可以搭建个人主页,也可以搭建项目主页。下面就以搭建个人博客主页为例,简单记录之。

Create A Repo

在你自己的 github 页面创建一个新的以你的用户名命名的 repo: YOUR_USER_NAME.github.io ,它将为你在 master 上创建一个你自己的(user)的个人主页项目。下面你就可以把它 clone 到本地进行开发与修改:

$ cd workspace
$ git clone https://github.com/YOUR_USER_NAME/YOUR_USER_NAME.github.io

本地构筑个人博客

Github Pages 内置支持 Jekyll 博客引擎,你可以只专注于按照 jekyll 的规范写 markdown,而不用关注存储等其他细节。

为了更好地写博客,你需要先在本地安装一下 jekyll ,细节可以参加其官方文档;然后在本地生成你初始的 blog:

$ cd tmpdir
$ jekyll new YOUR_USER_NAME.github.io

这时你可以在本地运行你博客:

$ cd tmpdir/YOUR_USER_NAME.github.io
$ jekyll serve

打开浏览器 http://127.0.0.1:4000 , 就可以看到它初始的样子了。

同步到 github

先把你刚刚生成的本地文件拷贝到你的博客页工作目录:

$ cp -rf tmpdir/YOUR_USER_NAME.github.io/* workspace/YOUR_USER_NAME.github.io

然后在 YOUR_USER_NAME.github.io 工作目录中,将其同步到 github 上去:

$ cd workspace/YOUR_USER_NAME.github.io
$ git add .
$ git commit -m "init github user blog page"
$ git push origin master

注意:这里如果你的账号开启了 Two-Factor Authentication,那么你 push 的时候用户名是你的 Two-Factor Auth 的用户名,密码是当时生成的 token,不可不知~

这时再 http://YOUR_USER_NAME.github.io 看一下,是不是你的博客主页已经生效了 :)