版本控制SVN与Git

SVN VS Git

SVN

作为一个开源的版本控制系统,管理着随时间改变的数据,这些数据放置在一个中央资料档案库(repository)中。这个库就像一个普通的文件服务器,它会记住每次文件的变动。我们可以浏览文件的变动历史,把当前版本的文件恢复到旧的版本。

SVN 集中式协同模型

集中式代码管理的核心是服务器,所有的版本信息都放在服务器上,因此受到网络的限制。所有开发者在开始一天的工作前都要从服务器获取最新版本的代码,然后进行开发,再提交代码,解决冲突。

Git

Git 是一款开源的分布式版本控制系统,可以敏捷高效的处理或或大或小的项目。分布式和 SVN 等集中式的最大区别在于每个开发人员从中心版本库/服务器上 check out 代码后会在自己的机器上克隆一个自己的版本库。这样在没有网络的情况下在本地也可以进行开发,代码管理。

Git 分布式模型

Git 的一些功能特性

  • 从服务器上克隆完整的 Git 仓库(包括代码和版本信息)到单机上;
  • 在自己的机器上根据不同的开发目的,创建分支,修改代码;
  • 在单机上自己创建的分支上提交代码;
  • 在单机上合并分支;
  • 把服务器上最新版的代码 fetch 下来,然后跟自己的主分支合并;
  • 生成补丁(patch),把补丁发送给开发者;

Git 与 Github

Git 是一个系统,相当于一个工具,而 Github 就是基于这样一个系统的代码托管平台,让开发者更高效的使用 Git 去托管自己的代码。

Git 与 SVN 区别

  1. Git 是分布式的,SVN 是集中式的。Git 的好处是跟其他同事不会有太多的冲突,自己写的代码放在自己电脑上,一段时间后再提交、合并,也可以在不用联网在本地提交。
  2. Git 没有一个全局的版本号,而 SVN 有。SVN 里容易阅读的数字版本号,它实际是任何一个相应时间的源代码快照。
  3. Git 分支和 SVN 分支不同。分支在 SVN 中一点不特别,就是版本库中的另外一个目录。而 Git 可以从同一个工作目录下快速的在几个分支之间切换。
  4. Git 把内容按元数据方式存储,而 SVN 是按文件。所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn.cvs 等文件夹里。如果你把 .git 目录的体积大小跟 .svn 比较,你会发现他们差距很大。因为 .git 目录是处于你的机器上的一个克隆版的版本库,它具有中心版本库上所有的东西,例如标签、分支、版本信息等。
  5. Git 的内容完整性要优于 SVN。Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,在遇到磁盘故障和网络问题时降低对版本库的破坏。

Git 和 SVN 的适用性

SVN 更适用于项目管理,Git 仅适用于代码管理。一个研发队伍的成员正常包括:需求分析、设计、美工、程序员、测试、运维,每个成员在工作中都有产出物,包括了文档、设计代码、程序代码,这些都需要按项目集中进行管理的。SVN 能清楚的按目录进行分类管理,使项目组的管理处于有序高效的状态。

文章只是作为个人记录学习使用,如有不妥之处请指正,谢谢。

猜你喜欢

转载自blog.csdn.net/modurookie/article/details/80782008