git与svn的不同
假设你在读这篇文章,说明你跟大多数开发人员一样对GIT感兴趣,假设你还没有机会来试一试GIT,我想如今你就要了解它了。
GIT不不过个版本号控制系统,它也是个内容管理系统(CMS),工作管理系统等。假设你是一个具有使用SVN背景的人,你须要做一定的思想转换,来适应GIT提供的一些概念和特征。所以,这篇文章的主要目的就是通过介绍GIT能做什么、它和SVN在深层次上到底有什么不同来帮助你认识它。
1.GIT是分布式的,SVN不是:
这是GIT和其他非分布式的版本号控制系统,比如SVN,CVS等,最核心的差别。假设你能理解这个概念,那么你就已经上手一半了。须要做一点声明,GIT并非眼下第一个或唯一的分布式版本号控制系统。另一些系统,比如Bitkeeper, Mercurial等,也是执行在分布式模式上的。但GIT在这方面做的更好,并且有很多其他强大的功能特征。
GIT跟SVN一样有自己的集中式版本号库或server。但,GIT更倾向于被使用于分布式模式,也就是每一个开发者从中心版本号库/server上chect out代码后会在自己的机器上克隆一个自己的版本号库。可以这样说,假设你被困在一个不能连接网络的地方时,就像在飞机上,地下室,电梯里等,你仍然可以提 交文件,查看历史版本号记录,创建项目分支,等。对一些人来说,这好像没多大用处,但当你突然遇到没有网络的环境时,这个将解决你的大麻烦。
相同,这种分布式的操作模式对于开源软件社区的开发来说也是个巨大的恩赐,你不必再像曾经那样做出补丁包,通过email方式发送出去,你仅仅须要创建一个分支,向项目团队发送一个推请求。这能让你的代码保持最新,并且不会在传输过程中丢失。GitHub.com就是一个这种优秀案例。
有些谣言传出来说subversion将来的版本号也会基于分布式模式。但至少眼下还看不出来。
2.GIT把内容按元数据方式存储,而SVN是按文件:
全部的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。假设你把.git文件夹的 体积大小跟.svn比較,你会发现它们差距非常大。由于,.git文件夹是处于你的机器上的一个克隆版的版本号库,它拥有中心版本号库上全部的东西,比如标签,分 支,版本号记录等。
3.GIT分支和SVN的分支不同:
分支在SVN中一点不特别,就是版本号库中的另外的一个文件夹。假设你想知道是否合并了一个分支,你须要手工执行像这种命令svn
propget svn:mergeinfo,来确认代码是否被合并。感谢Ben同学指出这个特征。所以,常常会发生有些分支被遗漏的情况。
然而,处理GIT的分支却是相当的简单和有趣。你能够从同一个工作文件夹下高速的在几个分支间切换。你非常easy发现未被合并的分支,你能简单而快捷的合并这些文件。
4.GIT没有一个全局的版本,而SVN有:
眼下为止这是跟SVN相比GIT缺少的最大的一个特征。你也知道,SVN的版本实际是不论什么一个相应时间的源代 码快照。我觉得它是从CVS进化到SVN的最大的一个突破。由于GIT和SVN从概念上就不同,我不知道GIT里是什么特征与之相应。假设你有不论什么的线 索,请在评论里奉献出来与大家共享。
更新:有些读者指出,我们能够使用GIT的SHA-1来唯一的标识一个代码快照。这个并不能全然的取代SVN里easy阅读的数字版本。但,用途应该是同样的。
5.GIT的内容完整性要优于SVN:
GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时减少对版本号库的破坏。这里有一个非常好的关于GIT内容完整性的讨论
–http://stackoverflow.com/questions/964331/git-file-integrity
git与svn的不同的更多相关文章
- GIT和SVN之间的区别及基本操作对比
1)GIT是分布式的,SVN不是: 这是GIT和其它非分布式的版本控制系统,例如 SVN,CVS等,最核心的区别.如果你能理解这个概念,那么你就已经上手一半了.需要做一点声明,GIT并不是目前第一个或 ...
- GIT和SVN之间的五个基本区别
GIT不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等.如果你是一个具有使用SVN背景的人,你需要做一定的思想转换,来适应GIT提供的一些概念和特征.所以,这篇文章的主要目的就是 ...
- iOS开发——源代码管理——git(分布式版本控制和集中式版本控制对比,git和SVN对比,git常用指令,搭建GitHub远程仓库,搭建oschina远程仓库 )
一.git简介 什么是git? git是一款开源的分布式版本控制工具 在世界上所有的分布式版本控制工具中,git是最快.最简单.最流行的 git的起源 作者是Linux之父:Linus Bened ...
- GIT与SVN的区别
1.GIT是分布式的,SVN不是: 这是GIT和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别.如果你能理解这个概念,那么你就已经上手一半了.需要做一点声明,GIT并不是目前第一个或唯 ...
- 蒋鑫:为什么 Git 比 SVN 好
在版本控制系统的选型上,是选择Git还是SVN? 对于开源项目来说这不算问题.使用Git极大地提高了开发效率.扩大了开源项目的参与度. 增强了版本控制系统的安全性,选择Git早已是大势所趋. 但对于企 ...
- git vs svn
http://www.tuicool.com/articles/e2MnAb Git与SVN的不同之处 svn为集中化的版本控制,svn获取最新的版本或者提交更新,历史记录等信息每次都要连接中央版本库 ...
- [git/svn]Git和SVN差异
转自:http://blog.csdn.net/huacuilaifa/article/details/19124635 在参加百度的开源项目时接触到Git,后来又陆续在微博上看到很多宣扬Git为程序 ...
- git和svn的区别001
Git和SVN之间的五个基本区别 中文原文地址:http://blog.jobbole.com/31444/ 友情链接git和svn链接2:http://blog.csdn.net/sunboy_20 ...
- git 和 svn的区别(转)
英文原文:5 Fundamental differences between GIT & SVN,编译:外刊IT评论 如果你在读这篇文章,说明你跟大多数开发者一样对GIT感兴趣,如果你还没有机 ...
- git与svn的区别-小结一下
1)Git是分布式的,SVN不是: 这 是GIT和其它非分布式的版本控制系 统,例如SVN,CVS等,最核心的区别.好处是跟其他同事不会有太多的冲突,自己写的代码放在自己电脑上,一段时间后再提交.合并 ...
随机推荐
- BP神经网络公式推导及实现(MNIST)
BP神经网络的基础介绍见:http://blog.csdn.net/fengbingchun/article/details/50274471,这里主要以公式推导为主. BP神经网络又称为误差反向传播 ...
- 写PPT的先扬后抑的思路
近期给一个客户做IT战略规划. 基本结束了,客户要求写点有高度的东西.我想也是,尽管眼下的PPT也触及到战略和行业的问题,可是没有总结出来.于是就挖空心思,琢磨了三天.写了4页PPT.改动了几遍.还算 ...
- UVA 10917 Walk Through the Forest SPFA
uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem= ...
- @EnableAsync和@Async开始异步任务支持
Spring通过任务执行器(TaskExecutor)来实现多线程和并发编程.使用ThreadPoolTaskExecutor可实现一个基于线程池的TaskExecutor.在开发中实现异步任务,我们 ...
- [Nuxt] Use Vuex Actions to Delete Data from APIs in Nuxt and Vue.js
You'll begin to notice as you build out your actions in Vuex, many of them will look quite similar. ...
- 如何设计一个基于mysql的消息系统
https://segmentfault.com/a/1190000012255186
- hadoop集群中的日志文件 分类: A1_HADOOP 2015-02-28 20:37 680人阅读 评论(0) 收藏
hadoop存在多种日志文件,其中master上的日志文件记录全面信息,包括slave上的jobtracker与datanode也会将错误信息写到master中.而slave中的日志主要记录完成的ta ...
- github-vimium-compile-crx
chrome-62.x版本上安装vimium 1.61.1 https://blog.csdn.net/ZHUJIANWEILI4/article/details/78385346
- HTML5开发移动web应用——SAP UI5篇(9)
之前我们对于app的构建都是基于显示的.如今我们来格式化一下,引入很多其它的SAP UI5组件概念.这使得APP的一个界面更有层次性.更像是一个手机应用的界面,而且更好地使用SAP UI5中提供的功能 ...
- [Webpack] Configure Prepack with Webpack
Great improvements and optimizations can be made to the output of bundled code. Prepack provides the ...