01 引言
前一段时间分享了关于Git
工具的使用。因为笔者一直用的是SVN
,所以本章对比一下Git
和SVN
都有哪些异同点。选择的版本管理工具的时候应该怎么选?
你可能看到这样的文章《弃用SVN,拥抱高效的Git管理》,也可能看到这样的文章《Git还是SVN?为什么很多程序员对Git比较排斥,但又不得不用?》,甚至听到过诧异的反问:我靠,你们竟然还用SVN
太Out了…等等。SVN
和GIT
都有一批忠实的粉丝。
因为对Git
使用不是特别熟悉,所以不做推荐。既然是工具适合自己就好。我们且对比一下各自的异同点。
02 定位不同
Git
是一个免费的开源分布式版本控制系统,旨在快速高效地处理从小型到超大型项目的所有项。分布式是很多架构师或者开发者眼前一亮的地方,为了应付复杂的业务项目,分布式项目被广泛使用。同样,Git
作为分布式版本控制系统,应该也是时代的产物。
SVN
是一个开源的、集中的版本控制系统,由Apache
出品,其特点是它是有价值数据的避风港,其模型和用法的简单性,以及它能够支持从个人到大型企业运营的各种用户和项目的需求。
集中式相比分布式的设计,集中式的相对使用起来更急容易上手,更适合新手小白。
03 更新频率不同
Git
更新频率比较密集:
SVN
更新频率大致每年两个版本:
从更新频率上讲,Git
比 SVN
更活跃。
04 使用的复杂度不同
Git
日常需要掌握git clone
、git push
、git add
、git commit
、git checkout
、git pull
等常用命令,如果熟练掌握还需要熟悉git rebase
和git merge
、git fetch
和git pull
、git reset
和git revert
等的区别。除此之外,还有一些进阶的操作如git stash
、git submodule
、git Cherry-Pick
等。
SVN
相比就简单很多,对新手非常友好。简单概括就是检出代码、更新代码、解决冲突和提交代码,所见即所得。
SVN
更适合新手或者非相关领域的小白使用。Git
命令多,自然功能就会强大,可适用性更强,一旦熟悉可能就再也回不去SVN
时代了。如果使用Idea等编辑器集成,则操作流程区别不大。
05 工作模式不同
Git
大致分为四个区域:
- workspace:工作区
- staging area:暂存区/缓存区
- local repository:版本库或本地仓库
- remote repository:远程仓库
workspace
工作区就是编码区,即目光所示之处。通过git add
将工作区的内容添加到暂存区,可以理解为就只是将工作区将本地仓库和本地仓库建立映射关系。通过git commit
将 暂存区的的代码提交到本地仓库(本地仓库就是.git
),git push
可以将本地仓库的代码推送到远程仓库。
SVN
则没有本地仓库之说,工作区直达远程仓库。
06 网络影响不同
Git
是可以离线工作的。如果没有网络,用户可以将代码git commit
提交到本地仓库,等待网络恢复之后,就可以git push
推送到远程仓库了。
SVN
如果没有网络,代码就无法推送到远程仓库。容易代码的丢失。
SVN是集中式版本控制(代码仓库只在中央服务器),Git是分布式(每人都有完整仓库)。
07 小结
在企业里主要还是以稳定为主,切换新的技术需要承担风险、成员的学习成本也会变大。Git
和SVN
之争不会停歇,孰好孰坏不能一概而论,只要适合自己才重要。
但是这么卷的市场环境下,多掌握一门技术,就多一分竞争力。我们都要懂一些。
不会停歇,孰好孰坏不能一概而论,只要适合自己才重要。
但是这么卷的市场环境下,多掌握一门技术,就多一分竞争力。我们都要懂一些。