zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    @SpringBootApplication注解的理解
    git详解
    什么是maven?
    redis发布订阅实战
    报文示例
    Cisco的ACI究竟是什么?它和SDN有关系吗?
    IP数据包分析
    ARP数据包分析
    水冷精密空调工作原理
    风冷精密空调工作原理
  • 原文地址:https://www.cnblogs.com/lan1x/p/5488667.html
Copyright © 2011-2022 走看看