svn是有一个服务器可以update和commit,git一般都是用github来pull和push,相当于也有一个中央服务器。
都说svn是集中式版本控制系统,git是分布式,具体使用起来感觉差别不是很大,我想问下这两者的具体区别是什么呢?
svn是有一个服务器可以update和commit,git一般都是用github来pull和push,相当于也有一个中央服务器。
都说svn是集中式版本控制系统,git是分布式,具体使用起来感觉差别不是很大,我想问下这两者的具体区别是什么呢?
SVN: 集中式的版本控制,必须依赖中央服务器才能实现 提交,更新 操作
一旦断网,所有机器都不能提交 更新代码
GIT:分布式版本控制,每一台机器都能当做一个中央服务器,即使断网也能提交,更新,没有网络不能远程更新代码而已
但不影响正常工作
区别: GIT有本地版本库(个人更新 提交),远程版本库(多人协作更新代码用途) 概念
SVN 仅仅只有远程版本库(一旦断网,多人不能协作)概念.
最大区别:使用人数
GIT跟SVN一样有自己的集中式版本库或服务器。但,GIT更倾向于被使用于分布式模式,也就是每个开发人员从中心版本库/服务器上chect out代码后会在自己的机器上克隆一个自己的版本库。可以这样说,如果你被困在一个不能连接网络的地方时,就像在飞机上,地下室,电梯里等,你仍然能够提交文件,查看历史版本记录,创建项目分支,等。对一些人来说,这好像没多大用处,但当你突然遇到没有网络的环境时,这个将解决你的大麻烦。
同样,这种分布式的操作模式对于开源软件社区的开发来说也是个巨大的恩赐,你不必再像以前那样做出补丁包,通过email方式发送出去,你只需要创建一个分支,向项目团队发送一个推请求。这能让你的代码保持最新,而且不会在传输过程中丢失。GitHub.com就是一个这样的优秀案例。
5 回答2.8k 阅读
3 回答2.6k 阅读
3 回答960 阅读
872 阅读
git快:git保存的就是文件快照,直接签出文件即可。而svn保存增量,签出时要从增量里复原文件。
svn无网络时就没法用了。而git无网络时只是不能和别的机器上的仓库交互而已。
说git有中央服务器的,那其实是管理上视为中央服务器,其实那个仓库和你个人电脑上的仓库的地位在技术上是平等的,只是管理因素设置的不平等而已。
在git下,你可以将任何别人的仓库设置为远程仓库,和“中央服务器”没有区别,只是origin等名称上差异,origin只是默认第一个远程服务器的名字。而svn下各client是不可能通过这样的途径交互的,只能通过别的途径互传补丁。
分支,git引以为豪的分支功能。git上分支极快,也是因为git保存的是文件快照和文件指针样的东西。而svn的分支又是从增量里复原。