以git对照看svn

  1. 前言

    这篇博文并不是要排挤哪个工具,但出于第一印象和本人对于Linus的崇拜,难免带有感情色彩。

  2. 命令对照

    svnadmin create  ------------------------------> git init            

    svn co                 ------------------------------> git clone        

    svn update          ------------------------------> git pull        

    svn add              ------------------------------> git add        

    svn commit        ------------------------------>  git add, git commit        

    svn status          ------------------------------>  git status        

    svn switch                 ------------------------>  git checkout

    svn merge                ------------------------>  git merge

    svn revert        ------------------------------> git checkout

  3. 分支管理

    git是把内容按元数据方式存储,简单么来说你写代码的所有分支和记录都放在.git文件夹内,所以git的仓库比较大;而svn是按文件的形式来组织的,一个分支一个文件夹。这种不懂直接导致了对于分支管理的不同。svn的branch和tag其实就是从trunk上copy出来的代码,以文件夹的形式存在,你能很直观的在branches文件夹下看到;而git的话因为信息存在.get文件夹下,要看分支信息就只能用git branch命令看了。svn的switch命令我感到很不好用,相对git checkout就简单很多,反正我们只关心当前工作目录。对此,写一个小脚本来切换在nginx下的root目录。

  4. 分布式

    众所周知git是分布式的,其好处很明显,commit不用连网,本地的管理和仓库相对独立,自由度很大(特别是stash的应用);svn commit需要连网。

  5. 易用性

    由于设计理念和历史原因,svn的可视化支持非常好;git的话用过一些可视化版本或者编辑器、ide插件,但都不及直接命令行好用。

  6. 代码管理过程

    一下以RabbitVCS为例说一下svn管理流程。

    checkout到本地

    如果修改的幅度很小,可以选择把要修改的文件或者分支上锁,修改,合并到trunk,提交

    如果修改比较大,可以不要请求锁,当修改完代码后要检查(diff)一下本地文件是否和远程的相适应(可能别人也提交了代码,但不影响自己的修改),如果适应就可以提交了,如果不适应(冲突)就要做排除冲突的工作再提交


    以git对照看svn_第1张图片

    以git对照看svn_第2张图片

      



你可能感兴趣的:(以git对照看svn)