总所周知,在项目开发过程中,版本控制的重要性,它的出现让团队协作更方便,省事。
svn和git是不同思想的版本控制系统,但他们各有利弊。
svn是集中式版本控制系统,就是有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客服端连接到这台服务器,取出最新的文件或者提交更新。svn具有权限控制,可以锁定文件,始终都可以精确的、完整的找到你需要的变动记录。
但集中化最显而易见的缺点是中央服务器的单点问题,如果中央服务器宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。svn极易发生冲突,在提交的时候比手速,谁提交的快,谁就没冲突。
git是分布式版本控制系统,客户端并不是提取最新版本的文件快照,而是把代码仓库完整地镜像(克隆)下来,进行完整的备份。在本地有个本地库,可以进行一系列操作,例如提交(commit),创建分支等,在本地库能看到版本记录。没网的时候,可以进行实时数据存储,保证数据的完整性,等有网的时候再push到远程库。
说到git,不得不说GitHub了!
GitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git 作为唯一的版本库格式进行托管,故名GitHub。所谓托管平台,也就是说他可以用于存放文件。只不过上面的文件都是可以公开被访问到的。
GitHub是通过Git进行版本控制的软件源代码托管服务,并且,GitHub还引入了一些社交属性。号称是世界上最大的程序员(同性)交友网站。简单的说,在GitHub上面,你可以提交你自己写的代码(发微博)、关注(粉)某人、关注(赞)某个项目、添加评论、Fork(转发)一个项目来自己修改,这些功能和微博都是一样的,只是将我们的吐槽换成了由各种编程语言写的代码。我们平时见到的大部分开源代码也都是挂在上面的。
刚接触git发现它和svn很像,感觉版本控制的操作都差不多,但git的分支是有区别于svn的,git分支的出现使得在svn脑中的管理成为现实,还需探究,实践。
待更新......
协作哪有不冲突,重要的要沟通好。svn和git各有利弊,视情况而定。