我认识的 SVN 和 git
来到上海的这些天,跟一些公司技术人员的交流之后,发现很多公司使用的代码版本管理工具是 SVN。
在过去三年的工作中,我们公司一直使用的是 git管理工具,leader 也一直强调 git 全面优于 SVN。这么多天以来,发现如此多的公司,团队在使用 SVN,我想 SVN 一定是有自己的优势的。
经过一晚的学习了解,鄙人将自己了解的 SVN 和 git 写下来,供行业的使用者参考点评。
首先,我先简单的将 git 和 SVN 的一些区别列举出来:
1.git 是分布式管理工具,而 svn 是集中式管理
2.git 把内容按照元数据的形式存储,而 SVN 是按照文件存储
3.git 分支和 SVN 的分支结构不同
4.git 的内容完整性要优于 SVN
5.git 没有一个全局的版本号,而 svn 有具体的版本号
下面是较详细的解释:
1.subVersion,是一个开源的版本控制系统,支持大多数常见的操作系统。SVN 管理着随时间改变的数据,这些数据存放在一个中央资料档案库中(repository)。这个档案库很像一个普通的文件服务器,但它会记住每一次文件的变动。所以,我们可以浏览文件的变动历史,也可以把档案恢复到旧的版本。SVN 可以管理任何类型的文件,包括程序源码。
2.git 是一款免费,开源的分布式版本控制系统。用以有效,高速度处理从很小到非常大的项目版本管理。git 是linus torvalds 为了帮助 lnux 内核开发而开发的一个开源的版本管理软件。
3.集中式版本管理控制系统的核心是服务器。开发者在开始工作之前必须从服务器获取源码,然后开始开发,解决冲突,提交等。而分布式版本控制系统相比集中式最大的区别就是开发者可以将新的版本提交到本地。每一个开发者都可以通过克隆的方式,在本地拷贝一个完整的 git 仓库。
4.工作流程:
SVN 工作流程:
1)新的一天,从服务器下载项目组最新代码
2)进入自己的分支,开始工作,每隔一段时间向自己的分支提交一次代码。(一般一个小时左右,或在完成一个小功能以后)
3)下班之前,将自己的分支合并到服务器的主分支上。
git 工作流程:
1)从服务器上克隆完整的 git 仓库(包括代码和版本信息)到单机上
2)在自己的机器上根据不同的目的创建分支,修改代码。
3)在单机上自己创建的分支上提交代码,
4)在单机上合并分支
5)将服务器上的最新代码 fetch下来,然后跟自己的主分支合并。
6)生成 patch 补丁,把补丁发送给主开发者
7)主开发者会检查各个开发者的补丁是否有冲突,如果有,根据冲突的成都决定自己解决冲突还是将冲突交给有冲突的开发者,由他们来解决补丁中的冲突,其中一人将解决后的补丁发送给主开发者。补丁全部没有冲突之后,则通过审核。
8)一般来说,开发者可以通过 pull 命令来解决冲突
以上,是我的一点认识,谨供行业同仁参考点评!