自从有了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还有很多有趣而且强大的东西。大家赶快来体会吧。
分享到:
相关推荐
Git与SVN是两款流行的版本控制系统,各自有着不同的设计理念与使用场景。版本控制系统是软件开发中不可或缺的工具,用于管理源代码和文档的修改历史,以及协助多个开发人员之间的协同工作。 首先,Git是一个分布式...
《svnbook》可能会提及SVN与Git的异同,帮助你理解在何种情况下选择哪种工具更为合适。 9. **高级特性**:除了基础操作,书中还涵盖了如锁定、忽略文件、日志查看、导出、导入选项等高级功能,帮助你充分利用SVN的...
它的界面简洁明了,通过鲜明的颜色区分不同之处,使用户一眼就能识别出两个文件或代码之间的异同。Kaleidoscope支持多种文件格式,包括文本文件、图片、JSON、XML等,这使得它在日常开发工作中极具实用性。此外,...
4. 配合版本控制系统:与Git、SVN等版本控制系统无缝集成,使得在提交或拉取代码时能轻松对比差异。 二、常用源码对比工具 1. Beyond Compare:这是一款广受欢迎的跨平台比较工具,提供了强大的文本、文件夹、...
与传统集中式工作模式的异同 4.2.3. 合并后推送 4.2.4. 合并还是变基 4.1.1. 版本库派生 4.1.2. Pull Request 4.1.3. 手工合并 4.1.4. 在线编辑 4.1.5. 简化的 Fork Pull Request 4.1. Fork Pull模式 4.2....
而“git 分布式 mercurial”的标签,则将Mercurial与另一种著名的DVCS——Git进行了关联,暗示我们将对比两者之间的异同。 Mercurial的核心概念在于其分布式特性。与集中式的版本控制系统(如CVS或SVN)不同,每个...
6. **版本控制集成**:与Git、SVN等版本控制系统无缝集成,方便进行版本回溯和对比。 四、如何使用版本对比工具? 1. **打开文件/文件夹**:选择要对比的两个文件或文件夹,导入到工具中。 2. **查看差异**:工具...
在版本控制系统中,如Git、SVN,文件比较是核心功能之一。开发者提交代码时,系统会自动比较新旧版本,展示改动的部分,方便其他团队成员进行代码审查。这种比较不仅局限于单个文件,还可以扩展到整个项目,查看整个...
在实际的开发环境中,代码差异比对工具常常与版本控制系统如Git、SVN等结合使用。例如,当你在Git中执行`git diff`命令时,就可以查看工作目录与最新提交之间的差异。这些工具通常支持命令行界面和图形用户界面,以...
此外,该版本还增强了对版本控制系统的支持,包括Git、SVN等,使得用户可以直接在Beyond Compare中进行版本间的对比和合并,进一步提高了开发效率。对于数据库管理员而言,Beyond Compare的SQL比较功能也是一大亮点...
3. 版本控制集成:与Git、SVN等版本控制系统无缝对接,可以直接在比对工具中查看提交历史,对比不同版本间的差异。 4. 文本合并:在多人协作的项目中,当两个开发者对同一部分代码进行了独立修改时,工具可以协助...
BeyondCompare可以与多种版本控制系统(如Git、SVN等)集成,直接在工具内部进行版本比较和冲突解决,提升了开发效率。 四、自定义规则 为了满足不同场景的需求,BeyondCompare允许用户自定义比较规则,例如设置...
在多人协作的版本控制系统如Git或SVN中,当两个或更多开发者对同一文件进行修改时,可能会出现冲突。此时,Merge可以作为中立的合并工具,同时显示三个版本(基线、你的修改和他人的修改),帮助用户智能地解决这些...
3. 版本控制:在Git、SVN等版本控制系统中,Beyond Compare作为第三方工具,提供高效的冲突解决手段。 4. 网站维护:FTP功能使得网站文件的更新和同步更加便捷,确保线上内容与本地一致。 总的来说,Beyond Compare...
- 版本控制集成:支持与Git、SVN等版本控制系统无缝对接,辅助代码审查和版本回溯。 3. 文件对比的实际应用: - 开发者:在编程时,开发者可以使用文件对比来检查代码的更新,避免因误删或误改导致的问题。 - ...
5. **集成版本控制**:它能与常见的版本控制系统(如Git、SVN等)集成,方便开发者查看代码的修改历史。 6. **自定义设置**:用户可以根据自己的需求定制比较规则,如忽略空格、大小写敏感度等。 在压缩包中,"read...
5. **SQL Source Control**:整合了版本控制系统(如Git、SVN等)与SQL Server Management Studio,使得数据库对象也能像代码一样进行版本控制。 6. **.NET Memory Profiler**:用于检测.NET应用程序的内存使用情况...
3. **版本控制集成**:对于使用版本控制系统(如Git、SVN)的团队,SQL.Delta可以与之无缝集成,方便地管理数据库变更历史。 4. **报表生成**:它可以生成详细的比较报告,有助于团队成员理解和审查更改。 5. **...
4. **版本控制集成**:它能与Git、SVN等版本控制系统集成,方便开发者查看代码的历史变更。 5. **表格比较**:对于包含结构化数据的文件,如CSV或Excel表格,Beyond Compare可以进行行列式的比较。 6. **自定义...
5. **版本控制集成**:可以与Git、SVN等版本控制系统无缝集成,直接在Beyond Compare中查看版本间的差异。 6. **合并冲突**:在协同开发中,当文件发生冲突时,Beyond Compare提供了一个直观的界面,帮助用户解决...