1

git现在火的一塌糊涂。当年的svn风光不再。如下是我在google trends上查到结果,可以作为佐证:

clipboard.png

然而,总有人要问一个--为什么!!!

我之前看到不少这样那样的说辞,然而我觉得

  • 说git好的,都没有说到点子上

  • 说git不好的,可能真是不懂linus创造git的上下文。要是拿企业内开发的上下文来看git,可是看不出什么好的。

我曾经暂时忘掉SVN,为了Git而学习Git,以Linus的思维替代我的思维。百般思考后,在观看了Linus在google的演讲后,我觉得我找到了Git的脉搏。

版本管理工具的本质价值之一是多人的协作。Git的成功是因为认识到了人性。一点也不夸张,让我娓娓道来。

自洽的、最少依赖的个人工作得到支持

1000多人的Linux开发团队是分布在世界各地的,使用git也就不必依赖中心服务器、不必需要很少的网络。就在自己的电脑上就有完整的仓库,可以做任何版本管理,除了分享代码。SVN显然是不合适的,因为单点故障大家甚至无法提交,更加无法开分支,这是无法忍受的。

剔除害群之马很简单

如果Linus经过观察,发现有些程序员特别容易出漏子,那么封杀的办法就是不必拉取即可。实际上Linus就是这样干过。如果是SVN,就变成了撤销惹麻烦的开发者的账号或者限定他的访问范围,并且从仓库中移除麻烦的代码提交。就是说,封杀的方法在git而言,是不做某事即可,SVN是做一系列事情才可以。一正一反,大家可以体会一下。Linus喜欢前者,并且得心应手。这样的工作流程就避开了很多“政治”问题,让他的集成代码过程变得主动。

可以使用信任网络

Linux太大了,不可能完全看完补丁代码的方式来识别信任,这个Linus曾经干过,最后的结果当然是放弃。如果发现有些程序员特别优秀,他只要选择拉取他们的实现。这些程序员也只是拉取他们信任的程序员的实现。这样的信任网络是可以层次化的,因此对应于1000多人的开发者来说,这样做确实可以通过分层的信任网络达成大规模的团队协作。如果是SVN,我不知道如何做可以更好

轻量的分支开销鼓励大量被使用。

对于这样的团队,为了敏捷的迭代,如果有想法就分支(这样的开发隔离想法是很有价值的),那么在svn上分支是海量的并且全局的大家互相影响,因此是要命的。而对于Git总数当然是海量,但是每个人的分支都在自己的仓库内,不会影响到他人。且分支无需连接服务器,因此是飞速的。

所以,对于Linux团队来说,Git是必须的。特别是它的分布式,可以帮助建立信任网络,减少政治问题。所以说它的设计首先是关于人的,关于最佳的工作流程的。而Git技术则是这些思想的完美载体。

Linus不仅仅创建了Linux,也实际上管理着一个巨大的团队,做法就是用一套工具提供信任网络和少政治的工作流程,从而可以不管。说Linus是此团队的“仁君”,并非缪赞。想想混乱的现实世界,我确实对这个高手团队的管理方法感到敬佩。

这解释了开源代码项目使用git的热潮。它符合人性的光辉。

SVN当然可以继续用,在企业内部其实也有它的简单和方便之处。然而,这些年企业内的开发流程乏善可陈,开源界红红火火,那些整日贫乏的面孔,不去学习开源界的性感怎么办。

所以,git就这么火了呗。

对了,利益相关,我写了一本git小书的。

作者:刘传君

创建过产品,创过业。好读书,求甚解。
可以通过 1000copy#gmail.com 联系到我

出品

bootstrap小书 https://www.gitbook.com/book/...
http小书 http://www.ituring.com.cn/boo...
Git小书 http://www.ituring.com.cn/boo...


Reco
4.6k 声望541 粉丝

敢作敢为