Git与SVN的使用感受

看到此文,是否觉得体内洪荒之力爆发,饥渴难耐想吐槽、情不自禁想捐赠
本文为原创文章,尊重辛勤劳动,可以免费摘要、推荐或聚合,亦可完整转载,但完整转载需要标明原出处,违者必究。

支付宝微  信

branching-illustration@2x

这是一篇上网一搜一大堆的文章,所以,重在个人感受(不说具体实现,当然现在也不懂!)。

工作环境需要,分别接触了Git和SVN版本控制工具。接触不久,尽管这两种工具都不是很熟悉,目前仅能达到满足简单的工作需求(有时还需要查引擎)。但,还是有一些感受以记录。

分支(branches)与里程碑(tags)


Git的分支和里程碑很有趣和简单,可以快速地在当前工作区切换不同的分支和里程碑。

SVN的分支和里程碑本身就是一个目录(拷贝),目录下分别有一个.svn的文件夹以存储版本信息。

所以,SVN切换分支很麻烦,需要切换工作区(每一个工作区只对应服务器的某一分支)。而Git却很方便。

 

集中式与分布式


这个事情和上面的分支和里程碑是有重叠的地方的。

Git采取的是分布式。简单的说就是每台checkout过代码的笔记本上都有着一个完整的代码库。

而SVN却是集中式的,只有一个是代码仓库,就是服务器。

所以,Git可以本地提交,SVN需联网提交。

Git是没有中心服务器的,每个人机器上都是一个完整的库,我们平时开发代码时的中央服务器其实和我们自己机器上的库内容是完全一样的(格式有点不同,是bare的)。虽然平时大家都是将代码提交到中央服务器上再统一pull别人的代码,但实际情况你可以总是pull张三的库,然后push给李四等等操作。
个人认为去中心化是Git(也包括其他分布式VCS)最伟大的改变。去中心化意味着没有权威、没有主力,所有人都是平等的。这概念本身看起来好像没什么,但实际对社区影响是巨大的,去看看 github.com 上的fork功能,你可以fork任何一个你喜欢的项目,接着按自己的喜好修改成自己的项目,或是发起pull request请原作者merge你的功能到他们项目里去(这同样也得益于Git另一项与SVN很大不同的功能——分支策略),而且大多数开源项目都会鼓励你去fork它们。这里面没有权威,没有主从,所有人只要有兴趣都可以在其他人的基础上去构建更强大或是更有领域针对性的项目。大家不是为了开发某个项目而来,而是为了贡献更强的功能给社区,这样最终的项目将是整个社区所有人共同努力的结果,将生生世世繁衍不息。
当然,去中心化也可能会引发一些问题,比如Linux的各种发行版本有时候让人难以抉择,但相信市场之手会帮我们出选择。

20140212171808656

本地版本控制系统

20140212173552781

分布式的版本控制系统

20140212173534984

集中式的版本控制系统

参考


 


文章来源:胡旭个人博客 => 【原】Git与SVN的使用感受

转载请注明出处,违者必究!


这是一篇原创文章,如果您觉得有价值,可以通过捐赠来支持我的创作~
捐赠者会展示在博客的某个页面,钱将会用在有价值的地方,思考中...


分类: 技术, 版本控制 | 标签: , , | 评论 | Permalink

发表评论

电子邮件地址不会被公开。 必填项已用*标注