版本控制工具是软件开发者的必备工具,它用于存储、追踪目录(文件夹)的修改历史,版本控制工具在某种程度上可以直接影响一个组织中配置管理水平的高低。版本控制系统分为三大类:本地版本控制系统、集中式版本控制系统和分布式版本控制系统。
当前最流行的就属分布式版本控制系统Git和集中式版本控制系统SVN。下面,我们欣才IT学院对这2款工具进行深入探讨。
作为一个开发者你不可能不知道Git,毕竟无论你是开发自己的开源项目还是和团队一起进行大规模产品的开发,Git都已经是源代码管理工具的首选。
为什么选择用Git?我想你不会拒绝多些时间谈恋爱吧。Git系统保存的是文件的快照,将文件的整体复制下来保存,也就是说你拷贝的是一个完整的版本库,包括历史记录,提交记录,这样你可以完全恢复到以前的任一个提交而不会发生任何改变或丢失。最重要的是,没有网络一样可以工作,火车上、等人的时候,你都可以在本地操作,诺,是不是省时省事?
Git中没有了中央版本库的说法了,但是为了开发小组的代码共享,通常会搭建一个远程的Git仓库。但和SVN不同的是,开发者本地也包含一个完整的Git仓库,从某种程度上说本地的仓库和远程仓库是等价的,没有主次之分,
Git究竟有多受开发者的欢迎呢?举个例子,有人说,不会Git的程序员是被鄙视的,因为不会Git也就近乎不会Linux,不会Linux的程序员自然要被鄙视。哈哈,虽然有些武断,但是,互联网的发展瞬息万变,接触新代码的能力也是衡量一个程序员职业生涯的长短和价值所在。猿们,生命在于不断地进化啊!
Git工具
Source Tree
Source Tree是一个免费的老牌Git GUI,跨平台,既有图形化界面又有git命令行。
(1)基本的commit、pull、push都拥有,而且一旦发生错误的时候提示很准确。
(2)基本的分支管理也有,对于有些工具删除远程分支是假删除,SourceTree完美解决了这个问题。
(3)拥有reset(重置)和checkout(签出)两大功能,而且更加稳定。
(4) 那么最近用SourceTree,发现了一个很强大的功能,就是“丢弃”这个功能,和checkout其实原理是一样的。不过图形化界面肯定比较方便了。
SourceTree 被评为Mac下性价比最高的,功能丰富,基本操作和高级操作都设计得非常流畅,适合初学者上手。对于重度用户,Source Tree还支持自定义脚本的执行。
Source Tree的还有一个特色功能就是支持Git Flow,可以一键创建一个Git Flow的工作流。
Git Extensions
Git Extensions可以说是Windows下最好的git客户端,容易上手且免费开源,功能完善。只是在子模块切换、拉取远端等方面用户体验就不如上文提到的Source Tree。
TortoiseGit
TortoiseGit(小乌龟)是git的一个gui包装,只提供Windows版本,提供中文版支持,对于中国的开发者来说是绝对的福音,而且免费。小乌龟的文件管理器右键菜单的操作方式对于新手来说非常容易上手,果然是只萌萌的小乌龟啊。友情提示,使用tortoisegit,你需要单独下载msysgit安装。
SmartGit
SmartGit是一个跨平台的应用软件,商业使用需要购买,非商业的免费且无需审核,但是大家一定要自觉。自带的 diff 和 merge 工具非常好用,SmartGit还能外接beyong compare。
以上工具都是比较常用且好用的,一般的IDE都支持。也有人吐槽,不管是Git Extensions
还是TortoriseGit都只是众多客户端之一罢了,用不用都无所谓。不用的话,使用Git命令也完全可行。但是,笔者还是要安利一下Source Tree。
Git托管平台
Github
Github在第六期“开发者社区”中已有详细说明,这里就不多赘述。不得不说,Github太火,人多高手多,由于它的社交性,你可以认识很多志同道合之人,情人节也不必啃狗粮了。
Bitbucket
Bitbucket支持私有免费项目,有中文界面,提交大文件速度很快,且不限容量。相比较而言,Github上的出名项目比Bitbucket多很多,但它的私有仓库需要付费,无法提交大文件。
网址:https://bitbucket.org/
Coding
Coding是一个面向开发者的云端开发平台,在Coding上可以托管代码,Coding的特点是速度快,但是毕竟发展时间短。2016年3月Coding宣布收购代码托管平台GitCafe。
网址:https://coding.net/
Csdn.net
Csdn.net是面向国内开发者提供代码托管、代码片、社交编程、社区讨论等的开发服务。很靠谱,只是功能比较少。
网址:http://code.csdn.net/
以上的托管平台中,Github还是大部分开发者的选择,Bitbucket也因其功能的全面及免费性质拥有大批使用者,而我们上期讲的码云(git.oschina.net)也是一个git的托管平台,私有项目免费,速度也快,在国内比较吃香。如果公司内用,还可以自己搭建。
SVN是Subversion的简称,是一个跨平台的开源版本控制系统,管理随时间改变的各种数据。SVN会备份并记录每个文件每一次的修改更新变动,这样我们就可以把任意一个时间点的档案恢复到想要的某一个旧版本。
使用SVN时要注意:首先,提交的时候必须写日志,一个团队可能有多人对同一文件操作,若每个人提交时都不记录,日后若修改的文件出现问题则无从下手,所以写日志时要把修改了哪些地方、哪些地方还有偏差、接下来如何解决偏差等一一记下来;其次,提交之前必须更新,这是强制性的无需多说,另外需在反复确保正确的前提下,勤更新勤提交;最后,提交只提交自己修改的文件,提交之前检查是否是需要提交的文件。
Update->add->写注释->commit,要是一个完整的事务,缺一不可。
SVN的缺点就是如果无法连接到中央版本库的环境下,就无法提交代码,将代码加入版本控制,无法查看代码的历史版本及变化过程。因此,备份要备份所有代码数据以及所有更改的版本记录。如果是局域网的话倒还行,宽带够大,速度也快,如果在互联网网速慢的情况下,提交一个10M的文件就需要5分钟,简直生无可恋了。
SVN工具
TortoiseSVN
TortoiseSVN是SVN版本控制系统的一个免费开源客户端,可以超越时间的管理文件和目录。TortoiseSVN文件保存在中央版本库,除了能记住文件和目录的每次修改以外,版本库非常像普通的文件服务器。你可以将文件恢复到过去的版本,并且可以通过检查历史知道数据做了哪些修改,谁做的修改。这就是为什么许多人将Subversion和版本控制系统看作一种“时间机器”。
SmartSVN
SmartSVN 是一个功能强大而且简单好用的图形化的SVN客户端。它是跨平台的图形界面下的SVN管理,我们也可以用命令行来管理!
SVN托管平台
RiouxSVN(私有、免费、国外)
RiouxSVN 的界面简洁美观,支持私有仓库,若要公开需要手动操作。但是,RiouxSVN每个仓库只有50MB,可根据自己实际情况选择使用。
网址:https://riouxsvn.com/
SVNSpot (私有、免费、国内)
SVNSpot对于免费用户来说。有10M的试用空间,可创建私人项目,但最多只能创建2个版本库。 而VIP用户则可以购买更多更大的使用空间。
网址:http://code.svnspot.com/
SVN Hosting(私有、收费、国内)
SVN Hosting也是分为免费用户与VIP用户,针对免费用户可以免费新建一个开源项目的SVN,而且空间、数量不限,也可以加入他人创建的项目。
网址:http://svn.jundie.net/
SVNChina(私有、收费、国内)
SVNChina下,若只是项目开发组成员或项目代码只读者,可以免费加入他人项目,且数量、空间不限,若自己建立项目则需要缴纳年费。
网址:http://www.svnchina.com/
sourceforge (开源、免费、国外)
Sourceforge是全球最大开源软件开发平台和仓库,支持 Git、 Mercurial、SVN。
网址:http://sourceforge.net/
Google Code(开源、免费、国外)
google 开源代码托管,支持 Git、 Mercurial、SVN,可在线浏览。
网址:http://code.google.com/
总结
作为一个开发者,笔者偏爱Git,除了便捷的本地操作外,Git也从根本上改变了开发人员对分支和合并的使用。但是,我们虽可以通过使用 git 提升工作效率,减少重复工作,更加方便的沟通。但Git 的切换也会导致上线系统的修改工作,其实切换最重的应该是上线部署系统。团队协同用Git还是SVN,一方面要看任职公司或团队负责人对技术的选型偏爱;另一方面要看项目类型比如网游项目有大量的媒体设计混合在程序中,就很需要SVN这样的服务器;再者SVN更方便公司进行统一管控;而Git更倾向于开源或纯代码的开发。(欣才IT学院http://www.thinksite.cn/)