Git和Cvs、Svn的区别

                                  <----------------看过其他csdn整合-------------------------->

Git和Cvs、Svn的区别
git是分布式版本控制系统,代码提交是在本地的(如此速度就快),当然生成补丁(patch)然后push到远程服务器上是需要联网的。

CVS、SVN是集中式版本控制系统,代码提交都是提交到远程服务器上,是需要一直联网的(如此速度就慢)(这里的一直联网不是说你写代码的时候要联网,而是说你提交代码的时候必须联网;但是git不同,git提交代码是本地的不需要联网,生成patch后push patch才需要联网,相当于svn的远程的集中服务器对于git来说,这个集中的远程服务器就在本地)。这个地方比较难理解。

CVS、SVN这样的集中式版本控制系统,它的完整代码仓库(代码仓库不仅仅只包含了代码,还包含各个历史版本的信息等)在中心服务器上,一旦这个中心服务器挂了,也就是完整的代码仓库挂了,虽然你本地可能之前有从中心服务器上取得过代码,但是那些历史版本信息都没有了,而且你也无法再提交代码。

git不同,git没有中心服务器的概念,每一个git客户端(git节点)都含有一个完整的代码仓库(前提是你之前从远程git仓库fetch过代码),所以那些历史版本信息都在你本机上,假如哪一个git节点挂掉了,随意从其他git节点clone一个代码仓库过来就ok了, 那些原来的代码、版本信息之类的都还是完整的(当然如果你在这个挂掉的git节点上新增的代码是没有掉了的)。

以上,git的每一个节点(第一次从远程git仓库取得代码后,该git节点就是一个完整的代码仓库)相当于svn的中心服务器,都包含完整的代码仓库。


git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。git是个工具,在linux里面也就类似gcc这样的工具一样,是一个shell命令

Github  一个平台(网站);

提供给用户创建git仓储空间,保存(托管)用户的一些数据文档或者代码等;

git和Github的关系
指定了remote链接和用户信息(git靠用户名+邮箱识别用户)之后,git可以帮你将提交过到你本地分支的代码push到远程的git仓库(任意提供了git托管服务的服务器上都可以,包括你自己建一个服务器 或者 GitHub/BitBucket等网站提供的服务器)或者将远程仓库的代码 fetch 到本地。

Github只是一个提供存储空间的服务器,用来存储git仓库。当然现在Github已经由一个存放git仓库的网站空间发展为了一个开源社区(不只具有存储git仓库的功能了),你可以参与别人的开源项目,也可以让别人参与你的开源项目。

Git 工作原理 

Git整体可以分为三部分:工作区、暂存区和分支,在我们的git工作目录下,有一个.git文件,这个文件就是我们常说的版本库,要注意的是Git是通过快照的方式保存版本的,和传统版本管理工具不同,git不保存不同版本之间的差异,只以快照的方式保存修改后的文件,如果文件没有被修改,git就不会保存,这也是git比传统工具更高效的原因,但也有一个缺点,由于每次保存的都是快照,相当于把修改后的文件复制一份保存起来,这难免会造成空间浪费,因此版本提交多了之后,.git文件会变得很大。

SVN工作原理

svn服务器有两种运行方式:独立服务器和借助于apache。 svn://或http://
svn客户端tortoisesvn
svn的基本工作原理: 在一台服务器上建立一个源代码库,库里可以存放许多不同项目的源程序。有源代码库管理员统一管理这些源程序。每个用户在使用源代码库之前,首先要把源代码库里德项目文件下载到本地,然后开发人员可以在本地修改,左后用svn命令进行提交,游源代码库统一管理修改。
版本控制解决了:
*代码管理混乱
*解决代码冲突困难
*在代码整合期间引发bug
*无法对代码的拥有者进行权限控制
*项目不同版本的发布困难


 

猜你喜欢

转载自blog.csdn.net/feiyucity/article/details/85064118