SVN和GIT的区别?
1、背景介绍
在开发软件或者进行文案工作时,经常需要在原有的基础上进行修改,但又担心无法恢复原有内容,因此一份文件可能会保存成多份,更可怕的是还得从堆积如山的文件中找出自己更改之前的内容。版本控制系统可以记录每次的文档更改,并确保由不同人所编辑的同一文档都得到更新,甚至还可以将数据恢复到以前的版本,所以大家也称版本控制系统为神奇的“时间机器”。
2、什么是SVN?
SVN是Subversion的简称,是一个自由开源的版本控制系统,支持大多数常见的操作系统。作为一个开源的版本控制系统,Subversion管理着随时间改变的数据。这些数据集中放置在一个中央资料档案库中。这个档案库很像一个普通的文件服务器,它会记住每一次文件的变动。这样你就可以把档案恢复到旧的版本,或是浏览文件的变动历史。
集中式版本控制系统
版本库是集中存放在中央服务器的,而工作的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始工作,工作结束后,再把自己的文件推送给中央服务器。
3、什么是git?
Git是开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。通俗的说,就是一个管理代码历史记录的工具,当多人协作时可以相互推送各自的修改。
分布式代码管理
分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库服务器。工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
4、SVN和Git有什么区别?
1.SVN属于集中化的版本控制系统,而Git是一个分布式版本控制系统。使用SVN,每个版本库有唯一一个“官方地址”,每个用户都从这个唯一地址获取代码、数据;获取代码库的更新,也只能连接到这个唯一的代码库,同步以取得最新数据;提交必须有网络连接(非本地版本库)。
2.GIT跟SVN一样有自己的集中式版本库或服务器。但GIT更倾向于被使用于分布式模式,也就是每个开发人员从中心版本库/服务器上check out代码后会在自己的机器上克隆一个自己的版本库。可以这样说,如果你被困在一个不能连接网络的地方时,你仍然能够提交文件,查看历史版本记录,创建项目分支,对一些人来说,这好像没多大用处,但当你突然遇到没有网络的环境时,这个将解决你的大麻烦。
3.GIT把内容按元数据方式存储,而SVN是按文件:GIT会在本地存储项目下的所有文件,因为本地存储的是一个远端的克隆版本,而svn则只需要checkout你需要的那部分代码文件到本地即可。所以通常本地的git目录的大小要远远大于svn的目录。
4.SVN的全局版本号,每一个事物处理(即一次提交)都具有整个版本库全局唯一的版本号。SVN 的版本号是连续的,可以预判下一个版本号。因为 SVN 是集中式版本控制,当然很容易实现版本号的连续性。GIT是分布式版本控制,多人在同一个版本库里工作,如果大家都用1,2,3……作为版本号,那肯定就冲突了。所以采用 40 位长的哈希值作为版本号,版本号是全球唯一的。
5.GIT的内容完整性要优于SVN:GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。