写在前面
为什么会有这篇文章
因为正在准备好几个比赛项目,另外也算是为了以后接项目,或者是自己的项目做一些准备,所以版本控制系统还是很有必要的。
顺便吐槽一下百度,这两天由于种种原因,不得不切换成百度,结果各种资料查不到,不说了,还是切换回Google,虽然翻墙麻烦一点,但是起码可以找到需要的资料。中文的开发资料还是相当不全面,对Git和TortoiseGit的介绍几乎就是简单地提提几个命令,看完完全不明所以,最后还是在Google上面找到的英文资料,很详实。
在看了一大堆资料以及折腾了一整天之后,终于算是对Git有了一点浅显的理解,写这份教程,一来是给自己备忘,二来是给现在以及以后要和我一起做项目的同仁一份参考,分享出来,也算是对Git初学者的一点帮助。
为什么选择Git
效率
很多人有一种习惯吧,什么软件都要最新的,最好的。其实吧,软件就是工具,生产力工具,为的是提高我们的生产力。如果现有的工具已经可以满足生产力要求了,就没有必要换了。生产效率高低应当是选择工具的第一位。
历史
开源世界的版本控制系统,经历了这么几代:
第一代,CVS,开创性的产品,至今很多古老项目仍在使用,但存在不少设计上的缺陷。
第二代,SVN,在CVS基础上大幅度改进,很快就取代了CVS的地位,现在的项目数量仍然非常庞大,而且SVN的缺陷不算多,很多商业项目似乎没有迁移到下一代版本控制系统的打算。比如Chrome就是使用SVN的。
第三代,Hg与Git。说起这两个,有种既生瑜,何生亮的感脚。这两个项目几乎是同时启动的,目标都是为Linux kernel提供一个开源可靠的分布式版本控制系统,同样优秀,只不过Git是Linus亲自带队做的,于是Git就成了Linux的选择。除此之外,Eclipse从原本的SVN转移到了Git,而Firefox与Python则使用Hg,国内的金山软件也使用Hg,而Cocos2d则是Git,孰优孰劣,不好说。
总的来说吧,前两代由于集中式管理的缺陷,现在用的肯定会越来越少,不过老项目往往不会轻易换。Git胜在功能强大,分支完善,败在设计复杂,难以理解。Hg胜在清晰易懂,功能完善,败在不利于从SVN迁移,相应的社区活跃度不如Github。
我们暂时会使用git,也许以后也会尝试另一个。
TortoiseXXX是什么东西
也许你已经看到了TortoiseSVN、TortoiseGit与TortoiseHg这三个项目,你也许想知道这三个是什么东西。事实上,SVN、Git与Hg都是命令行的程序,对于大多数人来说,尤其是Windows平台下,难以上手,门槛较大,而这三个项目正是解决这个问题。TortoiseXXX会在Windows的右键菜单下添加绝大多数的版本控制功能,免去了命令行的麻烦。但是说实话,右键菜单的效率和命令行的效率哪一个高,不好说,不过TortoiseXXX还是降低了门槛,对于初学者有很大的帮助,毕竟不是谁都能熟记那么多的命令的。