一:svn :
集中式的数据管理,存在一个中央版本库。所有开发人员本地开发所以用的代码均来自这个版本库,提交代码也必须提交到这个中央版本库中。
svn的版本控制流程如下:
1:在中央库中常见或从主干复制一个分支;
2:从中央库checkout下这个分支的代码;
3:增加自己的代码文件,修改现存的代码或删除代码文件;
4:commit代码,如果有人在刚刚的分支上提交了代码,你的commit 会提示代码过期,需要你现up你的代码在提交,如果出现冲突,解决完冲突在提交代码。
使用缺点:
1:需要局域网配合,若断网,则无法提交和更新代码;
2:代码集中管理,需要对中央版本库进行备份,以防版本出现混乱失控的情况。备份是要备份所有的代码数据以及所以更改的版本记录;
3:容错性差。
二:git
git :分布式的版本控制,由Linux 开发,每个开发人员从中心版本库/服务器上chect out代码后会在自己的机器上克隆一个自己的版本库,创建自己的分支,并进行开发操作,减少冲突,即使是无网络的环境,也能提交代码,查看版本,查看提交记录等。
三:svn 和git 的区别
git | svn |
分布式 | 集中式 |
内容按照元数据方式存储, | 按照文件存储 |
同一目录下可以有多个分支,代码合并分支简单 | 分支不能放在同一个目录下,需要另外目录管理,需要手工合并分支 |
git 没有全局版本号 | 存在全局版本号 |
存储内容使用sha-1哈希算法,代码内容较为完整 | svn是按项目集中进行管理,按目录进行分类管理(需求分析,设计、美工、测试、代码等等),适合于项目管理 |
git 下载,不联网也可以看log | svn 需要联网 |
直接合并,解决冲突简单 | commit 代码前,需要钱update一下,直接合并可能会覆盖其他人的代码 |