
版本控制培训Git.ppt
23页版本控制讲师:李廷伟讲师:李廷伟问题?v参与过2人以上的软件项目开发?v开发过程中程序是否具有版本控制?v如果不使用版本控制还会出现什么问题?没有版本控制?v备份多个版本,费空间,费时间v难于恢复至以前正确版本v容易引发BUGv解决代码冲突困难v代码管理混乱v难于追溯问题代码的修改人和修改时间v项目版本发布困难什么是版本控制?v版本控制(Revision control)是维护工程蓝图的标准做法,能追踪工程蓝图从诞生一直到定案的过程是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统版本控制工具vCVS-开启版本控制之门vSVN-集中式版本控制之王者vGIT-分布式版本控制之伟大作品主要内容vGIT简介vGIT在Windows上的安装与使用v客户端Tortoisegit的安装与使用vGIT与第三方 Eclipse 整合v通过CopSSH搭建GIT服务器vGIT经典协同模型/分支分类vAndroid源代码管理方式vGIT迁移GIT简介vLinus的第二个伟大作品2005年由于BitKeeper软件公司对Linux社区停止了免费使用权Linus迫不得己自己开发了一个分布式版本控制工具,从而Git诞生了。
v目前使用Git作为版本控制的开源软件:Linux kernel,Android, jQuery, Ruby on Rails,Debian…vEclipse上使用Git的项目数量也已经超过了使用SVN的仓库数为什么选用GIT?v分布式,离线操作v每日工作备份v异地协同工作v现场版本控制v避免引入辅助目录v可以吃后悔药v工作进度随时保存v快GIT 工作模型v集中式协同模型v社交网络式协同模型集中式协同模型社交网络式协同模型GIT基本交互流程图GIT-Windows安装v参见GIT安装文档GIT仓库初始化v仓库初始化git init --bare shared.gitv仓库文件目录HEAD:指向当前分支的一个提交description:项目的描述信息config:项目的配置信息info/:里面有一个exclude文件,指定本项目要忽略的文件objects/:Git对象库(commit,tree,blob,tag)refs/:标识着你的每个分支指向哪个提交hooks/:默认的hook脚本GIT变量设置vgit config命令--system:操作/etc/gitconfig 文件:包含了适用于系统所有用户和所有库的值。
--global:操作~/.gitconfig 文件 :具体到你的用户缺省:操作仓库.git/config文件v个人信省息初始化(不要随意修改)$ git config user.name “user1"$ git config user.email “user1@”v忽略无需版本控制的文档echo “*.txt” > .gitignoreGIT基本命令v参见git命令文档GIT相关概念v工作区v暂存区v版本库Tortoisegit安装与使用v参见Tortoisegit安装文档GIT与Eclipse整合v参见Egit安装文档CopSSH服务器配置v参见CopSSH安装文档GIT经典协同模型v中心仓库:包含master和develop两个分支v分支分类主要分支:master和develop分支支持性分支:特性分支,发布分支,热补丁分支vGit实现经典协同模型全过程Android 源码管理vAndroid使用Git作为代码管理工具,管理了160多个版本库使用上有两个重要的创新,开发了Gerrit进行代码审核以便更好的对代码进行集中式管理,还开发了Repo命令行工具,对Git部分命令封装,将一百多个Git库有效的进行组织。
Repo:repo是google开发的用于管理Android版本库的一个工具,是用Python对Git进行一定的封装,简化了对多个版本库的管理Gerrit:代码审核服务器Git版本库的推送必须要经过Gerrit服务器,所有的修订必须要经代码审核和校验后,才能纳入正式代码中v如何检出Android源码$repo init -u git://android.git.kernel.org/platform/manifest.git$ repo sync GIT迁移vCVS迁移到GIT使用cvs2svn 2.1(建议)使用cvs2gitvSVN迁移到GIT 使用git-svn。
