最近在比较认真的学习 Git,记录一下学习过程中的一些想法,无关 Git 命令行,是关于 分布式版本控制系统(DVCS)当前形式以及未来走向的展望 🙂

从两年多前开始关注 DVCS,当时颇是读了一些《Git 的 10 个优点》、《为什么 Git 比 X 更好》之类的文章,现在看来不需要论证 DVCS 的必要性了,这个是趋势(流行)。

当年 Sourceforge 如日中天。版本控制从 CVS 换成 SVN,加上好用的 TortoiseSVN 让事情变得简单,真是让人激动了一阵子。谁会想到如今项目要是托管在 Sourceforge 而非 Github 恐怕是不好意思跟人打招呼。

关注 DVCS 是因为 SVN 这类需要中心服务器的版本控制系统,当你不能连接到服务器时,大量的改动无法跟踪让人纠结,最后导致一大坨的 Commit 也不是什么优雅的事,这是最初的「痒」。

观察下来,目前周围的公司使用 DVCS 的几乎没有,毕竟在移动中编码,无法连接到中心服务器的情况鲜有发生,满世界跑来跑去在田野中、地铁上、飞机商务舱里写代码这种待遇不是一般码农可以享受的。况且这也是个高新技术,SVN 对一些人来说就已经很难了不是吗。

嗯,其实我想说的是,工具满足需要就好。

我个人的需求是个人代码仓库,没有太多和他人合作的需要,所以 DVCS 的一些协作模式对我作用并不大,最初是用 VisualSVN 搭建 SVN 服务器解决的,但是外出时不能连接服务器的问题不能解决。

类似 GitHub 这样比较有保障的服务可以解决需要,也免去 Self Hosting 的人力成本,其次才是享受 DVCS 一些附加功能的便利。当然,在中国,服务被墙掉是潜在的风险,虽然大部分时间我都不能理解这样一种服务是干了怎样伤天害理的事情。

DVCS 有两个主要的选择 Git 和 Mercurial(简称HG),你同样能够找到关于两者优劣的大量文章,当然两者其实很相像,随便用用那些优劣和你没关系。当然因为 GitHub 流行的关系,Git 更流行。

至于提供托管服务的,我主要关心 GitHub 和 BitBucket。

GitHub 当然支持 Git,免费用户只支持 Public Repository。作为不入流程序员,不是谁都有勇气把自己写的那些零碎一股脑公开在网络上的,所以要不要用 GitHub 我犹豫良久。

当然 GitHub 的 gist 是个好东西,用作代码交流或是在博客中嵌入代码都很方便。

BitBucket 的后台老板是 Atlassian,Atlassian 还有个产品是 JIRA,因为用过 JIRA 感觉不错的关系,所以附带加分,有后台至少说明这个服务还是有保障的。BitBucket 支持 Private Repository,是个用来放零碎东西的好地方。不过原来 BitBucket 只支持 Mercurial,最近才开始支持 Git。看到这里你知道我为什么开始学 Git 了吧。

学习首先一定要了解 DVCS 的概念,直接从命令行开始到一定程度一定会很困惑。Git 官网上有不错的教程。以下是另外一些教程: