【版本控制】Git与SVN的区别
一、SVN
SVN全名Subversion,即版本控制系统。 SVN是一个用于局域网的跨平台的软件,支持大多数常见的操作系统。作为一个开源的版本控制系统,Subversion 管理着随时间改变的数据。 这些数据放置在一个中央资料档案库中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。 这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。Subversion 是一个通用的系统, 可用来管理任何类型的文件, 其中包括了程序源码。
几个重要概念
SubVersion:实现服务系统的软件。
TortoiseSVN:是SVN客户端程序,为windows外壳程序集成到windows资源管理器和文件管理系统的 Subversion客户端。
SVNService.exe:是专为 SubVersion 开发的一个用来作为 Win32 服务挂接的入口程序。
AnkhSVN:是一个专为Visual Studio提供SVN的插件。
二、GIT
Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理.。Git 是Linus Torvalds为了帮助管理 Linux内核开发而开发的一个开放源码的版本控制软件。Torvalds开始着手开发Git是为了作为一种过渡方案来替代BitKeeper,后者之前一直是Linux内核开发人员在全球使用的主要源代码工具。开放源码社区中的有些人觉得BitKeeper的许可证并不适合开放源码社区的工作,因此Torvalds决定着手研究许可证更为灵活的版本控制系统。尽管初 Git 的开发是为了辅助Linux内核开发的过程,但是我们已经发现在很多其他自由软件项目中也使用了Git,很多Freedesktop的项目也迁移到了Git上。
三、Git与SVN的区别
1、Git是分布式的,而SVN不是,这是Git和其它非分布式的版本控制系统,例如SVN,CVS等的核心区别。 SVN存在一个中心点资源库,各个用户通过访问中心点SVN资源库下载或上传相关资源。而Git不存在中心点资源库,用户间通过互相之间的访问获取所需资源。
2、Git把内容按元数据方式存储,而SVN是按文件存储。
所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.git 等的文件夹里。
3、Git分支和SVN的分支不同:分支在SVN中一点都不特别,其实它就是版本库中的另外一个目录。Git分支是指针指向某次提交,而SVN分支是拷贝的目录。这个特性使Git的分支切换非常迅速,且创建成本非常低。Git有本地分支,SVN无本地分支。在实际开发过程中,经常会遇到有些代码没写完,但是需紧急处理其他问题,若我们使用Git,便可以创建本地分支存储没写完的代码,待问题处理完后,再回到本地分支继续完成代码。
4、Git没有一个全局的版本号,而SVN有
这是也是与SVN相比起来,Git所缺少的最大的一个特征。
5、Git的内容完整性要优于 SVN。
因为Git的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,即:能够确保在遇到磁盘故障和网络问题时,降低对版本库的破坏。