Git与SVN对比

Posted WindrunnerMax

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git与SVN对比相关的知识,希望对你有一定的参考价值。

Git与SVN对比

​Git​​​与​​SVN​​都是版本控制系统,版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一,最主要的功能就是追踪文件的变更。

描述

​SVN​​​是集中式管理的版本控制器,而​​Git​​​是分布式管理的版本控制器,这是两者之间最核心的区别。
​​​SVN​​​只有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。
​​​Git​​​每一个终端都是一个仓库,客户端并不只提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来,每一次的提取操作,实际上都是一次对代码仓库的完整备份。
相对来说分布式管理系统功能更强大一些,但同样的上手难度也就高一些,当然分布式代码版本管理系统并不一定适合所有团队,比如中小团队可能更关心的只是成本更低,简单易用,那么​​​SVN​​等这类集中式版本管理工具还是更为适合,但是不管团队最终选用什么代码版本管理工具,只要适合自己的团队的开发流程和工作方式,并且代码管理顺畅就可以了。

详细对比

差异

SVN

Git

系统特点

1. 集中式版本控制系统,文档管理很方便。

2. 企业内部并行集中开发

3. ​​windows​​系统上开发推荐使用

4. 克隆一个拥有将近一万个提交​​commit​​​,五个分支,每个分支有大约​​1500​​个文件,用时将近一个小时

1. 分布式系统,代码管理很方便。

2. 开源项目开发。

3. ​​Mac​​​、​​Linux​​系统上开发推荐使用。

4. 克隆一个拥有将近一万个提交​​commit​​​、五个分支、每个分支有大约​​1500​​​个文件,用时​​1​​分钟。

灵活性

1. 搭载​​SVN​​的服务器如果出现故障,就无法与之交互。

2. 所有的​​SVN​​操作都需要中央仓库交互,例如拉分支,看日志等。

1. 可以单机操作,​​Git​​​服务器故障也可以在本地​​Git​​仓库工作。

2. 除了​​push​​​和​​pull​​​或​​fetch​​操作,其他都可以在本地操作。

3. 根据自己开发任务任意在本地创建分支。

4. 日志都是在本地查看,效率较高。

安全性

较差,定期备份,并且是整个​​SVN​​都得备份。

较高,每个开发者的本地就是一套完整版本库,记录着版本库的所有信息。

分支方面

1. 拉分支更像是​​copy​​一个路径。

2. 可针对任何子目录进行​​branch​​。

3. 拉分支的时间较慢,因为拉分支相当于​​copy​​。

4.创建完分支后,影响全部成员,每个人都会拥有这个分支。

5.多分支并行开发较重,工作较多而且繁琐。

1. 我可以在​​Git​​​的任意一个提交点​​commit point​​开启分支。

2. 拉分支时间较快,因为拉分支只是创建文件的指针和​​HEAD​​。

3. 自己本地创建的分支不会影响其他人。

4. 比较适合多分支并行开发。

5. ​​Git checkout hash​​切回之前的版本,无需版本回退。

6. 强大的​​cherry-pick​​。

工作流程

1. 每次更改文件之前都得​​update​​​操作,有的时候修改过程中这个文件有更新,​​commit​​不会成功。

2. 有冲突,会打断提交动作,冲突解决是一个提交速度的竞赛:手快者,先提交,平安无事;手慢者,后提交,可能遇到麻烦的冲突解决。

1. 开始工作前进行​​fetch​​​操作,完成开发工作后​​push​​操作,有冲突解决冲突。

2. ​​Git​​的提交过程不会被打断,有冲突会标记冲突文件。

3. ​​Gitflow​​经典流程。

内容管理

​SVN​​对中文支持好,操作简单。

对程序的源代码管理方便,代码库占用的空间少,易于分支化管理。

学习成本

使用起来更方便,​​SVN​​对中文支持好,操作简单。

更在乎效率而不是易用性,成本较高,有很多独有的命令如​​rebase​​、远程仓库交互的命令等等。

权限管理

​SVN​​​的权限管理相当严格,可以按组、个人针对某个子目录的权限控制,每个目录下都会有个​​.SVN​​的隐藏文件。

​Git​​没有严格的权限管理控制,只有账号角色划分。

管理平台

有功能非常完善的插件。

除功能插件外,还有​​Gitlab​​​、​​Gerrit​​​、​​Github​​等。

每日一题

https://Github.com/WindrunnerMax/EveryDay

参考


以上是关于Git与SVN对比的主要内容,如果未能解决你的问题,请参考以下文章

git与svn对比

SVN 与 GIT 详细对比

Git与SVN对比

对比 Git 与 SVN

Git 与 SVN对比详解

对比Git 与 SVN,这篇讲的很易懂!