GitHub是个什么网站?

GitHub是个什么网站?

说到 GitHub 就得从 Git 说起。

程序开发过程中「版本控制」是非常强大的工具。顾名思义,版本控制工具可以用于记录程序开发过程中的每个版本。例如我今天实现一个 feature,提交一个版本;明天修复一个 bug,再提交一个版本。完成不同的任务时,可以分别维护专用的分支并最后合并以避免混乱。从版本库中可以查到修改记录,也可以比较不同版本的文件的差异。如果一不小心写坏了,还可以从以前的版本库中还原回来。为了团队开发,成熟的版本控制工具可以部署在多处(具体的形式可能不同,例如 Git 的分布式和 SVN 的中央式,区别可以见

),为程序开发、多人协作、发布、备份等操作提供了极大便利,也是软件工程中重要的组成部分。当然在软件开发以外,版本控制也是非常好用的工具,其思路适用于诸多行业。

Git 就是众多版本控制程序中相当知名的一个,由 Linux 作者 Linus Torvalds 开发,现在也是 Linux 内核以及其它诸多项目使用的版本控制工具。虽然被评价「操作复杂」(有调侃的段子说,即使 Git 声称可以离线运行也没用,因为你得随时上网查用法和参数),但是因为功能强大还是非常受欢迎。

可以参考

第一章的介绍。也可以参考

。

GitHub 是基于 Git 的一个代码托管网站。开发者可以将代码在 GitHub 上开源,可以浏览其它项目的代码,fork 到自己名下做修改,clone 回本地(没有访问权限的 private repo 除外)使用,也可以发起 pull request 向上游提交自己的修改。GitHub 围绕项目(即 Git 中的 Repository)做了许多功能,例如 Wiki,首页(GitHub Pages)等,也可以通过 Graph 来查看其他人 fork 的情况。GitHub 也有 Gists,用于分享代码片段。除此之外也有许多包管理器以 GitHub 作为包仓库(Cargo,AUR 上的部分包,小一些如 oh-my-fish 什么的)。关于 GitHub 的更多功能,可以参考

。

更重要的是,基于代码本身,可以集成更多后序功能,持续集成持续部署可以省去大量麻烦,可以参考

由于 Git 本身就是相当好用的工具,以及 GitHub 上聚集了许多牛人牛项目,所以除了单纯的代码托管以外,GitHub 也被视作程序员的 SNS。