git 和 svn 的比较
| Git VS SVN | ||
| 1 .功能 | ||
| 主体功能 | Git | SVN |
| 1、从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。 | 1 、SVN是基于关系数据库的(BerkleyDB)或一系列二进制文件的(FS_FS) | |
| 2、在自己的机器上根据不同的开发目的,创建分支,修改代码 | 2 、SVN采用标志和分支而抛弃了其他三件东西,实际上这意味着他们把 这个概念替换为在档案库内部复制文件或目录以便保存日志。 |
|
| 3、在单机上自己创建的分支上提交代码。 | 3、开发的时候不一定要锁定 | |
| 4、在单机上合并分支。 | 4、速度与稳定性看起来都不错。 | |
| 5、把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。 | 5、面向用户的集中安全策略管理; | |
| 6、生成补丁(patch),把补丁发送给主开发者。 | ||
| 7、看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突 (他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由 其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。 |
||
| 8、一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决 冲突,解决完冲突之后再向主开发者提交补丁。 |
||
| 从主开发者的角度(假设主开发者 不用开发代码)看,git有以下功能: |
||
| 1、查看邮件或者通过其它方式查看一般开发者的提交状态 | ||
| 2、打上补丁,解决冲突(可以自己解决,也可以要求开发者之间解决以 后再重新提交,如果是开源项目,还要决定哪些补丁有用,哪些不用)。 |
||
| 3、向公共服务器提交结果,然后通知所有开发人员。 | ||
| 2.优点 | ||
| 1、适合分布式开发,强调个体。 | 1、管理方便,逻辑明确,符合一般人思维习惯。 | |
| 2、公共服务器压力和数据量都不会太大。 | 2、易于管理,集中式服务器更能保证安全性 | |
| 3、速度快、灵活。 | 3、代码一致性非常高。 | |
| 4、任意两个开发者之间可以很容易的解决冲突。 | 4、适合开发人数不多的项目开发。 | |
| 5、离线工作。 | 5、大部分软件配置管理的大学教材都是使用svn | |
| 3. 缺点 | ||
| 1、学习周期相对而言比较长 | 1、服务器压力太大,数据库容量暴增。 | |
| 2、不符合常规思维。 | 2、如果不能连接到服务器上,基本上不可以工作,看上面第二步,如果服务器 不能连接上,就不能提交,还原,对比等等。 |
|
| 3、代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代 码和版本信息 |
一般集中式管理的有非常明确的权限管理机制(例如分支访问限制),可以实现分层管理,从而很好的解决开发人数众多的问题 | |
| 区别 | ||
| 比较项目 | Git 命令 | SVN 命令 |
| URL | git://host/path/to/repos.git | svn://host/path/to/repos |
| ssh://user@host/path/to/repos | https://host/path/repos | |
| file:///path/to/repos | file:///path/to/repos | |
| user@host:path/to/repos | ||
| /path/to/repos.git | ||
| 版本库初始化 | git init[--bare]<path> | svnadmin create<path> |
| 导入数据 | git clone; git add; git commit | svn import<path><url>-m |
| 版本库检验出 | git clone<url><path> | svn checkout<url/of/trunk><path> |
| 版本库分支检出 | git clone -b <branch><url><path> |
svn checkout<url/ofranches/name><path> |
| 工作区更新 | git pull | svn update |
| 更新至历史版本 | git checkout <commit> | suv update -r <rev> |
| 更新到指定日期 | git checkout HEAD@'{<date>}' |
git update -r {<date>} |
| 更新至最新提交 | git checkout master | git update -r HEAD |
| 切换至里程碑 | git checkout <tag> | svn switch<url/of/tags/name> |
| 切换至分支 | git checkout <branch> | svn switch<url/of/branches/name> |
| 还原文件/强制覆盖 | git checkout --<path> | svn revert<path> |
| 添加文件 | git add <path> | svn add <path> |
| 删除文件 | git rm <path> | svn rm <path> |
| 移动文件 | git mv <old> <new> | svn mv <old><new> |
| 清除未跟踪文件 | git clean | svn status | sed -e?? |
| 清除工作锁定 | _ | svn clean |
| 读取文件历史版本 | git show <commit>:<path>><output> |
svn cat -r<rev><url/of/file>@<rev>><output> |
| 反删除文件 | git add <path> | svn cp -r |
| 工作区差异比较 | git diff git diff --cached git diff HEAD |
svn diff |
| 版本间差异比较 | git diff <commit1><commit2>--<path> |
svn diff -r <rev1>:<rev2><path> |
| 查看工作区状态 | git status -s | svn status |
| 提交 | git commit -a -m "<msg>":git push |
svn commit -m "<msg>" |
| 显示提交日志 | git log | svn log | less |
| 逐行追溯 | git blame | git blame |
| 显示里程碑/分支 | git tag git branch git show -ref |
svn ls <url/of/tags/> svn ls <url/of/branches/> |
| 创建里程碑 | git tag [-m "<msg>"]<tagname> [<commit>] |
svn cp <url/of/trunk><url/of/tags/name> |
| 删除里程碑 | git tag -d <tagname> | svn rm <url/of/tags/name> |
| 创建分支 | git branch <brach> <commit> git checkout -b <branch><commit> |
svn cp <url/of/trunk> <url/braches/name> |
| 删除分支 | git bracn -d<branch> | svn rm <url/of/branches/name> |
| 导出项目文件 | git archive -o <output.tar><commit> |
svn export -r <rev> <path><oupt/path> svn export -r <rev><url><output/path> |
| 反转提交 | git revert<commit> | git merge -c <rev> |
| 提交练选 | git cherry-pick<commit> | git merg -c <rev> |
| 分支合并 | git merge <branch> | svn merge <url/of/branch> |
| 冲突解决 | git mergetool git add <path> |
svn resolve --accept = <ARG><path> svn resolved<path> |
| 显示文件列表 | git ls-files git ls-tree<commit> |
git ls git ls <url> -r <rev> |
| 更改提交说明 | git commit -amend | svn ps -revprop -r <rev>svn:log "<<msg>" |
| 撤销提交 | git reset[--soft|hard]HEAD^ | svnadmin dump, svnadmin load ,svndumpfiler |
| 属性 | .gitignore 文件 text 属性 eol 属性 git submodule 命令 |
svn :ignore svn: mime-type svn:eol-style svn:externals svn:keywords |
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等,最核心的区别.好处是跟其他同事不会有太多的冲突,自己写的代码放在自己电脑上,一段时间后再提交.合并 ...
随机推荐
- hdu 1015 Safecracker 水题一枚
题目链接:HDU - 1015 === Op tech briefing, 2002/11/02 06:42 CST === "The item is locked in a Klein s ...
- iPhone 通过UIRequiredDeviceCapabilities指定程序适用于哪些设备
以前在itunes中查看某个应用时,会有说明信息,表明程序适用于ios 1.0,2.0,3.0什么的. 上周末将Key Manager上传到app store时,一直有个疑问,就是没有发现填写程序适用 ...
- 三种Web前端框架比较与介绍--Vue, react, angular
一.Angular 1.MVVM(Model)(View)(View-model): 2.模块化(Module)控制器(Contoller)依赖注入: 3.双向数据绑定:界面的操作能实时反映到数据,数 ...
- UVa221 Urban Elevations
离散化处理.判断建筑可见性比较麻烦.下面采用离散化解决:把所有的x坐标排序去重,在相邻两个x坐标表示的区间中,整个区间要么同时可见,要么同时不可见.如何判断该区间是否可见?具体做法是选取该区间中点坐标 ...
- 阿里云域名绑定IP
前提条件:拥有一个阿里云域名,拥有一台自己的服务器,并且知道ip,我的是nginx 1.登陆阿里云https://www.aliyun.com/ 2.选择域名与网站,会看到自己拥有的域名,比如我的是m ...
- windows上的docker容器内安装vim
Reading package lists... Done Building dependency tree Reading state information... Done E: Unable t ...
- SilverLight-3:SilverLight 备注
ylbtech_silverlight 一.DebugSilverlight应用程序的方法: 第一种: 1.Silverlight引用命名空间:System.Diagnostics; 2.在程序必要的 ...
- 机器学习中的范数规则化之 L0、L1与L2范数
http://blog.csdn.net/zouxy09/article/details/24971995/ L1正则化及其推导 Laplace(拉普拉斯)先验与L1正则化 今天我们聊聊机器学习中出现 ...
- [Angular] Debug Angular apps in production without revealing source maps
Source: https://blog.angularindepth.com/debug-angular-apps-in-production-without-revealing-source-ma ...
- jdk/java版本与Android源码编译中的错误
错误一:javap未指向有效的java版本 Traceback (most recent call last): File "../../base/android/jni_generator ...