首先,这篇分享不是git命令操作大全,不是某代码托管服务的硬广, 只是希望激发仍然在使用中世纪时期版本管理系统的同学们,能够放弃你手里的SVN,转向更先进的思路。

所以,大家不会看到非常多的Command Line 教你Step By Step Git init :) , 请放心像读故事一样,慢慢理解为什么要拥抱Git,以及玩转Git你需要做什么?

本文大概分为以下几个篇章:

  1. 版本管理的发展历史

  2. 为什么Git能如此的火爆

  3. 不要用SVN去思考Git

  4. 玩转Git与协作

  5. 学习Git的一些参考资料

版本管理的发展历史

git快速入门教程(走进git时代你该怎么玩)(1)

  • 史前时期:1982年的RCS。现在你可能还能在Unix的发布包中找到它。

  • 古典时期:1990年的CVS,1985年的PVCS,1992年的clearcase(价格贵,功能 复杂,当然,今天还有人在用),微软的VSS(Welcome to Hell),90年代中期的Perforce(P4,这个工具今天都还在被广泛地使用,尤其是那些中等大小却有着大量开发团队的公司,现在是Google 内部最大的代码管理器)。

  • 中世纪时期:SVN,AccuRev(强力支持branch和merge,其扮演了一个很重要角色帮助社区脱离clearcase和CVS),

  • 文艺复兴时期:BitKeeper——Sun的内部管理工具,Linux的内核代码2002年也用这个工具,其实,很多开源工程都在用这个工具,2005年这个工具的东家BitMover对大家对BitKeeper逆向工程很不满,于是停止支持开源,于是出现了Git。

  • Git 诞生于一个极富纷争大举创新的年代。可以看到同期出现了其他不少创新的版本管理系统:

  • Mercurial (Hg) 第一次出现在2005年4月,也是因为BitKeeper不免费了。Hg可以和Git在一起使用,见:HG_GIT 。但是Hg和Git在设计上不一样,他们对提交/变更的概念是一样的,只不过Git用tree来实现,而Hg则是用扁平的文件和目录来实现(revlog)

  • Darcs (Darcs Advanced Revision Control System)是另一个让你摆脱Subversion和CVS的工具,2002年开始,今年是2.5版。它的优势是性能,以及他与众不同的历史版本管理 ——管理patches而不是snapshot(提交/修改),当然,这样一来,历史改变看上去很不好懂。

  • Bazaar (bzr) 是另一个开源的 DVCS,它试图给SCM的世界里带来一些新的东西。其由Canonical开发(Ubuntu的那个公司),在2008年成为GNU。

  • Plastic在2006年出现,强力地支持branch和merge,其还提供了强大的图示,包括3D的版本树,Plastic主要是为了让中等开发团队使用,介于大型的团队(ClearCase)和小型的团队(Subversion)之间。

  • Team Foundation Server (TFS),微软的新一代SCM工具,主要是为了VSS的失败负责,但是他还不是版本管理上还是很强,只不过,他集成了一大堆各种各样的工具,比如:issue tracking,test management等。

  • 为什么Git能如此的火爆

    我认为:首先,Git 很牛逼, 然后,基于Git的产品很牛逼 。

    不要用SVN去思考Git

    1. 去中心却集中

    2. 直接记录快照,而非差异

    3. 不一样的分支概念

    4. 三个工作区,三个文件状态

    去中心却集中(Decentralized but centralized)

    git快速入门教程(走进git时代你该怎么玩)(2)

    直接记录快照,而非差异

    git快速入门教程(走进git时代你该怎么玩)(3)

    git快速入门教程(走进git时代你该怎么玩)(4)

    不一样的分支概念

    三个工作区,三个文件状态

    git快速入门教程(走进git时代你该怎么玩)(5)

    玩转Git 与协作

    cherry-pick

    A-B-C-D

    \ E-F-G

    A-B-C-D-F‘

    \ E-F-G

    A-B-C-D A-B-C-D-E-F-G

    \ ==> \ E-F-G E-F-G

    rebase

    A-B-C-D-H A-B-C-D-H

    \ ==> \ E-F-G E-F-G

    因此:

    学习Git的一些参考资料

    写在最后

    文章代码格式不太好,欢迎直接访问云栖社区查看原文。

    ,