何谓 GitHub
GitHub 是一个基于 git 的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开。一旦你开始使用 GitHub,那么恭喜你,你在 GitHub 上托管的程序会有一个大家耳熟能详的名字,叫做“开源软件”!
GitHub 由 Chris Wanstrath, PJ Hyett 与 Tom Preston-Werner 三位开发者在 2008 年 4 月创办。迄今拥有 59 名全职员工,主要提供基于 git 的版本托管服务。
目前看来,GitHub 这场冒险已经胜出。根据来自维基百科关于 GitHub 的描述,我们可以形象地看出 GitHub 的增长速度:
今天,GitHub 已是:
一个拥有 143 万开发者的社区。其中不乏 Linux 发明者 Torvalds 这样的顶级黑客,以及 Rails 创始人 DHH 这样的年轻极客。
这个星球上最流行的开源托管服务。目前已托管 431 万 git 项目,不仅越来越多知名开源项目迁入 GitHub,比如 Ruby on Rails、jQuery、Ruby、Erlang/OTP;近三年流行的开源库往往在 GitHub 首发,例如:BootStrap、Node.js、CoffeScript 等。
Alexa 全球排名 414 的网站。
下载其他人的程序
要想下载其他人的程序,可以直接访问 GitHub 网站,无需注册。当然前提是你得知道源码的地址,比如我的一个开源项目 AhkScriptManager,其地址为 https://github.com/morgengc/AhkScriptManager,格式为 https://github.com/用户名/项目名
。
直接访问网站,按下图所示即可下载软件。
通常每个项目都会有一个 README.md
文件,它会自动渲染到项目主页,描述了这个项目的基本情况,包括安装使用方法等。这个文档采用的语法叫做 Markdown,是目前互联网上最为流行的文档格式。实际上,本文也是用 Markdown 语法编写的,只不过最终被渲染为了一个网页呈现给大家。
GitHub 是一个十分丰富的代码库,程序界流行一种说法,叫做“不要重复造轮子”。确实是这样,几乎你能想到的,别人早就想到了,而且实现了,更重要的是别人的实现比你自己的实现要高明得多。所以,着手写程序之前,可以尝试着先在 GitHub 上找一找有没有现成的“轮子”。很多时候,你会找到非常多的轮子,这个时候考验你的不是能不能找到轮子,而是选择哪一个轮子。
通常,可以查看项目主页上的标记以判断项目的流行度,有三个重要指标:
- 第一个叫做“Watch”,它表示有多少用户正在关注这个项目,当作者更新了项目以后,关注者可以收到一封邮件,看到作者做了哪些修改;
- 第二个叫做“Star”,它表示有多少用户给作者打了 Call,表示一种赞赏;
- 第三个叫做“Fork”,它表示有多少用户克隆了这个项目,GitHub 允许并鼓励大家克隆代码,你可以对克隆的代码做任何修改,并且可以将你新加的功能提交给原作者,如果原作者乐意,他可能会接受你的提交,并且将这些新功能集成到原始项目中,这体现了开源协作的精神。
当然,我这个项目是一个非常小众的编程语言 AutoHotkey 编写的,几个指标都比较低。 :)
创建 GitHub 账户
没有 GitHub 账户,你只能下载其他人的代码,你无法与各个开源软件的作者互动,软件作者也无法知道你是他的一个用户。更关键的是,你不能开源你自己的项目!因此,是时候给自己注册一个用户了。
- 打开 GitHub 官网。
- 点击绿色按钮
Sign up for GitHub
,填写用户名,邮件地址和密码。
注意:用户名只能包含字母和"-"字符;密码至少包含一个字母,一个数字和七个字符
-
点击绿色按钮
Create an account
,创建账号。
-
在下一个页面点击绿色按钮
Finish sign
完成注册。
现在,你的 GitHub 账号就创建好了。请先在你的注册邮箱中完成邮件验证,然后就可以登录 GitHub 了。
注意:G.F.W 曾经长时间屏蔽 GitHub,不过近几年没有屏蔽了,但网站渲染速度有时候较慢。如果长时间访问缓慢,可以参考 GitHub 访问慢解决办法 这篇文章。
创建你的第一个 GitHub 项目
-
登录 GitHub 后,点击右上方
+
按钮,再点击New Repository
,如图示:
-
然后输入 Repository 名称,以及仓库描述,选择开源协议,如图示:
-
点击
Create repository
后便创建仓库成功:
接下来,就可以在 GitHub 上编辑 README.md
,描述你这个项目想做点什么了。顺便花十分钟学一学 Markdown 语法。
关于开源协议,可以不选,推荐选 MIT。下面这张图用于快速区分各种开源协议的区别:
向仓库中添加代码
GitHub 默认使用 git 工具进行代码管理。对于上一代程序员来说,很多使用 SVN,也是支持的。如果 git 和 SVN 都不熟悉,建议使用 git。
SVN
如果熟悉 SVN,可以不使用 git。如果不熟悉,可以跳过这一节,直接看 git。首先需要找到项目的 SVN 地址,我还是拿我的项目举例:
全文拷贝红框内的内容,为:
https://github.com/morgengc/AhkScriptManager.git
修改后缀 .git
为 /trunk
:
https://github.com/morgengc/AhkScriptManager/trunk
将其粘贴到 SVN Checkout 中即可将项目下载下来。之后的操作就跟普通的 SVN 完全一样了。
git
git 是一个分布式版本控制工具。因为程序编写过程中必然会有大量的修改,在重要修改节点用 git 提交,可以对代码进行追溯,这样就实现了代码的版本控制。
在下图中,Remote 代表 GitHub 网站,Repository 代表本地的仓库,而 workspace 则代表受 git 管理的代码目录。我们的修改发生在 workspace 中,小修改提交到本地仓库,重要修改提交到 GitHub 网站。连线上标记了重要的 git 指令。
关于 git 工具的使用,请参见 这篇文章,作者已经描述得非常清楚了,我就不再重复了。
关于 git 的林林种种细节,建议参考 官方文档。