版本控制之svn和git

  1. 没有版本控制会出现的问题:
     - 备份多个版本,费空间,费时间
     - 难于恢复至以前正确版本
     - 容易引发BUG
     - 解决代码冲突困难
     - 代码管理混乱
     - 难于追溯问题代码的修改人和修改时间
     - 无法进行权限控制
     - 项目版本发布困难
  2. 什么是版本控制:
     版本控制(Revision control)是维护工程蓝图的标准做法,能追踪工程蓝图从诞生一直到定案的过程。是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统。
  3. SVN简介:
     Svn(Subversion)是近年来崛起的版本管理工具,在当前的开源项目里(J2EE),几乎95%以上的项目都用到了 SVN。Subversion 项目的初衷是为了替换当年开源社区最为流行的版本控制软件CVS,在CVS的功能的基础上有很多的提升同时也能较好的解决CVS系统的一些不足。
    3-1. SVN基本交互流程图

    工作思路: SVN 工作的的基本思路:在一台服务器上建立一个仓库,仓库里可以存放许多不同项目的源程序。由仓库管理员统一管理这些源程序.这样,就好象只有一个人在 修改文件一样.避免了冲突.每个用户在使用仓库之前,首先要把仓库里的项目文件下载到本地。用户做的任何修改首先都是在本地进行,然后用 SVN 命令进行提交,由 SVN仓库管理员统一 修改.这样就可以做到跟踪文件变化,冲突控制等等。
    3-2. SVN常用工具
     1.TortoiseSvn. 免费开源客户端
    3-3. Subversion建立仓库
     1. 建立svn仓库
      命令svnadmin create 仓库名称
     2. 仓库目录说明
      db目录:就是所有版本控制的数据存放文件。
      hooks目录:脚本文件的目录。
      locks目录:用放置hook来放置Subversion文件库锁定数据的目录,用来追踪存取文件库的客户端。
      format文件是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号。
      conf目录:是这个仓库的配置文件(仓库的用户访问帐号、权限等)。
     3. 注意事项
     .svn这个隐藏目录记录着两项关键的信息: 工作文件的基准版本和一个本地副本最后更新的时间戳。千万不要手工修改或删除这个 .svn 隐藏目录和里面的文件!!! 否则将会导致你本地的工作拷贝 (静态视图)被破坏,无法再进行操作。
    3-4. Subversion目录规范
     创建三个顶级目录
      /trunk 存放开发的“主线”
      /branches 存放支线副本
      /tags 存放标签副本
  4. git简介
     Linus的第二个伟大作品。2005年由于BitKeeper软件公司对Linux社区停止了免费使用权。Linus迫不得己自己开发了一个分布式版本控制工具,从而Git诞生了。
    4-1. git的特点:
     -分布式,强调个体
     -公共服务器压力和数据量都不会太大
     -速度快、灵活
     -任意两个开发者之间可以很容易的解决冲突
     -离线工作
     -每日工作备份
    4-2 git基本交互流程

    4-3 开源项目工作流程

    4-4 git建立仓库
     1.建立Git仓库
      git init --bare 库名称
     2.仓库目录说明
      -hooks目录:脚本文件的目录。
      -info目录:保存了不希望在 .gitignore 文件中管理的忽略模式的全局可执行文件
      -logs目录:日志目录
      -objects目录:存储所有数据内容
      -refs目录:存储指向数据(分支)的提交对象的指针
      -config文件包含了项目特有的配置选项
      -description文件仅供 GitWeb 程序使用
      -HEAD文件指向当前分支
    4-5. git 常用工具及配置
    1.git
    2.TortoiseGit
    3 配置:
     a) git config –-global user.name ‘xx’
     b) git config –-global user.email ‘xx’
     c) ssh-keygen -t rsa -C 'yourmail' 生成ssh key
    4-6. git常用命令
  5. SVN和GIT的主要区别
  • svn:
    1, 是集中式的version control
    2, 每次存储的仅仅是变化(**存储变化 **).
  • git:
    1, 是分布式的version control
    2, 每次存储完整的文件, 没有变化, 用一个指针指向前一个文件.

你可能感兴趣的:(版本控制之svn和git)