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之争不会停歇,孰好孰坏不能一概而论,只要适合自己才重要。
但是这么卷的市场环境下,多掌握一门技术,就多一分竞争力。我们都要懂一些。
不会停歇,孰好孰坏不能一概而论,只要适合自己才重要。
但是这么卷的市场环境下,多掌握一门技术,就多一分竞争力。我们都要懂一些。