自从有了git,很多开源项目都转移到了git。对于我们初学版本管理的人来说,git和SVN究竟有什么不同的地方呢?最近粗略了解了下git,并与SVN做了一番比较,大概结果如下:
SVN VS git
一,集中式 VS 分布式
SVN是典型的C/S模式的集中式管理。客户端直接对服务端做各种操作。而git则大不相同,他是分布式的,而且我们使用git命令大多数时候,只是在本地进行操作。当本地的内容完成以后,才使用push这样的命令把他推送到服务器上的库中。
二,增量存储 VS 快照
SVN在保存文本文件的时候,如果产生一个新版本,那么存储的只是两个版本的差异。而git的则是每个版本的快照。这一点来看,SVN能节省空间,但是git则更方便存取文件。
三,SVN分支 VS git分支
SVN的分支,仅仅是一个URL拷贝。在处理分支合并的时候,效率不高。git的分支则更加方便,任何一分支的创建,仅仅是保存一个41字节的指针而已。我们来看看SVN的分支创建:
- $svn copy file:////repos/idp/trunk file:///epos/idp/branches/mybranch
从上面的语句可以看出,SVN的分支就是一个hard link的目录。
再来看看git的分支。
- $git branch mybranch
在git中,创建分支是很廉价的,并且,对于分支的合并也是很容易。git 希望用户可以多使用分支。这里,如果要切换到分支,在git中使用
- $git checkout mybranch
就可以了。
四,全局版本 VS 全球版本
SVN的版本号应该叫修订版本号。因为他是针对一次提交,并不是某个文件的版本。并且以数字来作为版本号,递增。git的版本号 是一串SHA-1 散列的字符串。这个散列是针对文件内容,并且发生碰撞的几率可以是微乎其微。即使全球的人一起工作,也很难产生一个冲突。
五,记录一切 VS 回滚
SVN是一部时光机,错了就错了,不可能得到完美的回滚或撤销(使用一些很变态的手法,也许可以达到这个目的)。git 支持回滚。如果要删除提交:
- $git revert HEAD
注意这里本地(工作区)的修改并没有改变。
六、无处不在的.svn VS .git
为了管理版本,SVN在每个Working copy的目录中都隐藏了一个.svn目录。而对于git来说,所有的库信息都在 .git目录里了,仅此一个,自然也就很大很大。
七,集中管理 VS 处处备份
SVN的权限管理,可以针对不同用户授予不同权限。而git只有读与写权限。要么可读,要么可写,任何用户有读权限,就可以下载整个库。实际上, 也可以通过各种配置,使得git也可以支持权限控制到各个目录(SSH,web)。不过这些配置会相对麻烦一些。而每一个git的工作拷贝都可以看成是一 份备份,这个对于开源项目来说也是不错的选择。
八,直接提交 VS 合并提交
由于SVN的模式,开发者可以独立的提交。而git开发者的提交,只是在本地的库。对于push操作,则是必需要谨慎的。这里,push并不会自 动合并,所以每一次提交后,再次提交的必需通过fetch(不合并),pull(合并)下最新的数据后,合并再push。这样就有很多工作方式了。
以上只是我的一点理解。可能还有很多方面的比较。目前也有一些人,把SVN和git结合起来工作,于是便有了 git-svn这样的工具。git还有很多有趣而且强大的东西。大家赶快来体会吧。
相关推荐
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
编程选择题40道:版本控制:Git与SVN的使用.Tex.docx
git常见报错及解决方法.zip git常见报错及解决方法.zip git常见报错及解决方法.zip git常见报错及解决方法.zip git常见报错及解决方法.zip git常见报错及解决方法.zip git常见报错及解决方法.zip git常见报错及解决...
Git与SVN比较Git与SVN比较Git与SVN比较Git与SVN比较Git与SVN比较Git与SVN比较
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
Git-2.11.1-64-bit 和 TortoiseGit-2.4.0.0-64bit,适用于使用Git有服务器仓库,把写好代码放入Git仓库,使用SVNGit上传更新等,使用Git仓库的好处就在于,你在家里也是可以上传更新的,只要账号密码正确就可以了,...
SVN是一种集中式的版本控制系统,与Git相比,其主要特点包括: 1. 集中式:所有版本信息都存储在一个中央服务器上,开发者需要连接到服务器才能进行版本控制操作。 2. 简单的分支和合并:相较于Git,SVN的分支和...
这篇简明教程将带你深入了解Git的基本概念、安装步骤以及如何进行版本控制。 **一、Git简介** 1. **Git诞生**:Git由Linux内核开发者Linus Torvalds于2005年创建,初衷是为了更好地管理Linux内核的源码。它的设计...
git-svn是Git版本控制系统与Subversion(SVN)版本控制系统的桥梁,允许Git用户与SVN仓库进行交互。在一些项目中,由于历史原因可能仍在使用SVN作为中央版本控制系统,而git-svn可以使得开发者在本地使用Git的强大...
版本控制工具.exe
git(git-2.36.1.tar.gz)
Git 和 SVN 是两种广泛使用的版本控制系统,它们在软件开发中起着至关重要的作用,帮助团队协同工作并跟踪代码的历史变化。Git 是一个分布式版本控制系统,而 SVN(Subversion)是集中式版本控制系统。以下是关于 ...
gitblit-1.9.3.tar
Git 和 SVN 是两种广泛使用的版本控制系统,它们在软件开发中起着至关重要的作用。Git 是一个分布式版本控制系统,由 Linus Torvalds 创建,最初是为了管理 Linux 内核的源代码。而 SVN(Subversion)则是一个集中式...
Gitblit是一款开源的、专为Git设计的轻量级Web服务器和管理界面,它提供了对Git仓库的托管、浏览和管理功能。本篇将详细介绍如何在Linux环境下安装和配置`gitblit-1.8.0.tar.gz`安装包。 ### 1. 安装前准备 首先,...
### Git与SVN的核心区别 #### 版本控制模型的不同 - **SVN**:集中式版本控制系统。所有的数据(包括文件版本、日志、差异等)都存储在一个中心服务器上,用户通过客户端软件与该服务器进行交互。这种方式下,每一...
而SVN则将元数据保存在每个文件和文件夹的`.svn`子目录下。因此,移除这些信息意味着要删除这些特定的隐藏文件夹及其内容。 在提供的压缩包中,有两个`.reg`文件,`remove-svn-folders.reg`和`remove-git-folders....
版本控制系统在软件开发中起着至关重要的...通过 Git-SVN,开发者可以在享受 Git 功能的同时,与 SVN 服务器无缝对接,实现更高效的协作。掌握这些工具的使用,将有助于提升软件开发过程中的版本管理和团队合作效率。
二、Git 常用操作 1. Git init: 创建一个新的 Git 仓库 2. Git clone: 复制一个 Git 仓库到指定文件夹 3. Git add: 添加文件到暂存区 4. Git commit: 提交文件到 Git 仓库 5. Git pull: 从服务器下载 Git 仓库,并...
Git和SVN的比较 Git和SVN是两个最常用的版本控制系统,它们都是为了帮助开发者更好地管理代码、追踪变化、协作开发而设计的。那么,它们之间有什么区别呢?下面,我们将对Git和SVN进行比较,详细介绍它们各自的优...