1、git使用培训-PPT课件欢迎 版本管理的作用1 常用版本管理介绍2 版本管理的工作模式3 Git介绍 4 Git日常工作模式5今天的内容概述 学习目标 版本管理的作用 掌握日常的操作 团队协作版本管理的作用为什么要版本管理?为什么要版本管理?文件管理历史追踪冲突管理版本发布团队协作常用版本管理介绍常见的版本管理软件简 称全 名CVSConcurrent Versions SystemVSSMicorosoft Visual SourceSafeSVNSubversionGitTFSTeam Foundation ServerMercurialClearCaseIBM Rational Cle
2、arCasePerforce版本管理的工作模式灵活性健壮性单机版(文件系统,RCS)分布式(Git、Mercurial)发展过程集中式(CVS,SVN)本地本地计算机计算机版本库本地版本管理本地版本管理u版本库:个人电脑/服务器uRCS:Revision Control System 可追踪修改历史u问题:如何协作?Version 3Version 2Version 1file检出计算机计算机Afile检出版本服务器版本服务器版本库集中式集中式版本管理版本管理u版本库:版本服务器uVCS:Version Control System 又称CVCS(Central VCS)有SVN、CVS、fi
3、refly等产品u问题:服务器会停 网络会不通Version 3Version 2Version 1计算机计算机Bfile检出版本版本服务器服务器版本库分布分布式版本管理式版本管理u版本库 版本服务器 个人计算机uVCS:又称DVCS(Distributed VCS)有GIT、HG、bazaar等产品u问题:乱成一团?分支管理机制Version 3Version 2Version 1计算机计算机A版本库Version 3Version 2Version 1计算机计算机B版本库Version 3Version 2Version 1file检出file检出协作模式 锁定模型 冲突合并模型常用术语分
4、支(Branch):在一个时间点,复制一份处于版本控制之下的文件,从这之后,这两份拷贝就可以独立的互不干扰的进行各自开发。取出(Check-out):一次“取出”,就是在本地创建一份仓库的工作拷贝。提交(Commit):一次“提交”,将本地的修改写回到仓库或合并到仓库。冲突(Conflict):当开发者们同时提交对同一文件的修改,而且版本系统不能把它们合并到一起,就会引起冲突,就需要人工来进行合并。合并(Merge):合并就是把所有对文件的修改统一到文件里仓库(Repository):仓库就是当前的和历史的处于版本控制之下的文件所在的地方,通常在服务器端。工作版本(Working copy):
5、从档案库中取出一个本地端的复制,所有在档案库中的档案更动,都是从一个工作版本中修改而来的,这也是这名称的由来。Git介绍Git的诞生 2002年以前 Linus个人以diff方式管理 2002年至2005年 BitMover公司的BitKeeper 2005年以后 Linus两个月开发出GitGit的发展 大部份开源软件 G G C CGITGIT设计目标设计目标满足大满足大规模项规模项目需要目需要快速快速简单简单完全完全分布分布高效高效存储存储版本版本服务器服务器版本库GITGIT工作模式工作模式u版本库初始化 个人计算机从版本服务器同步u操作 90%以上的操作在个人计算机 添加文件 修改文
6、件 提交变更 查看版本历史等u版本库同步 将本地修改传送 到版本服务器Version 3Version 2Version 1计算机计算机A版本库Version 3Version 2Version 1计算机计算机B版本库Version 3Version 2Version 1file检出file检出GITGIT文件存储文件存储第二部分第二部分GIT GIT 基础基础版本库结构版本库结构TortoisegitTortoisegit设置设置创建版本库创建版本库l 版本库:repositoryl 创建方法创建方法p 执行git initl 示例示例p 工作目录:E:RepositoriesGITRCMS
7、Demop 在工作目录中点击鼠标右键l.git目录目录p 版本库:暂存区和对象库第一个提交第一个提交l 创建文件Readme.txtl 使用git add命令添加Readme.txtl 使用git commit提交Readme.txt修改文件修改文件l 修改Readme.txtl 使用git add命令添加Readme.txtl 使用git commit提交Readme.txt克隆版本库克隆版本库l 示例l 版本服务器:gitserverl 版本服务器用户:gitusrl 版本库:RCMSDocl 本地目录:F:git文件状态文件状态a a工作工作区区版本库版本库版本管理版本管理l 工作区p
8、工作目录:.git文件夹所处目录l 文件状态文件状态p 未跟踪:处于工作目录,但未被版本库管理的文件p 已跟踪:已被版本库管理的文件,可能存在于工作目录,也可能不存在于工作目录中GITGIT文件状态文件状态工作工作区区暂存区暂存区对象库对象库修改文件修改文件暂存文件暂存文件提交提交文件文件检出文件检出文件l GIT文件p 已被版本库管理的文件l 已修改已修改p 在工作目录修改GIT文件l 已暂存已暂存p 对已修改的文件执行git暂存操作,将文件存入了暂存区l 已提交已提交p 将已暂存的文件执行git提交操作,将文件存入对象库本地计算机本地计算机版本库Version mVersion Versi
9、on 1file本地版本库与服务器版本库(一)本地版本库与服务器版本库(一)版本版本服务器服务器版本库Version 3Version 2Version 1本地计算机本地计算机版本库Version 3Version 2Version 1file检出git add、commitgit pushgit pull版本版本服务器服务器版本库Version mVersion Version 1远程协作(一)远程协作(一)l 创建文件Readme.txtl 使用git add命令添加Readme.txtl 使用git commit提交Readme.txt至本地版本库xtl 使用git push保存Read
10、me.txt到服务器版版本版本服务器服务器版本库Version xVersion Version 1本地计算机本地计算机版本库Version mVersion Version 1本地版本库与服务器版本库(二)本地版本库与服务器版本库(二)版本版本服务器服务器版本库Version 3Version 2Version 1本地计算机本地计算机版本库Version 3Version 2Version 1git add、commitgit pushgit pull版本版本服务器服务器版本库Version nVersion Version 1git pushgit pull本地计算机本地计算机版本库Ver
11、sion xVersion Version 1远程协作(二)远程协作(二)l 修改Readme.txtl 使用git add命令添加Readme.txtl 使用git commit提交Readme.txtl 使用git pull获取服务器版本库更新l 使用git push将Readme.txt保存至版本服务器GITGIT常用命令常用命令l 获得版本库p git initp git clonel 版本管理版本管理p git addp git rmp git commitl 远程协作远程协作p git pullp git pushl 查看信息查看信息p git helpp git logp git
12、 diff第三部分第三部分GIT GIT 进阶进阶再谈暂存区和对象库再谈暂存区和对象库l 暂存区p 一个文件:.git/indexl 对象库对象库p 一个目录:.git/objectsp 存放版本库的各种对象对象对象l 对象对象p 每个对象都是一个文件p 每个对象都用40位的SHA-1值标识:6ff87c4664981e4397625791c8ea3bbb5f2279a3p 前两位作为目录名,后38位作为文件名l 对象组成对象组成p 类型:blob、tree、commit和tagp 内容:对象文件的内容p 大小:内容的大小对象类型对象类型l blobp 是一个文件p 存储文件的内容l tree
13、p 是一个文件p 类似一个目录p 包含其它tree和blobl commitp 是一个文件p 包含时间、作者、一个tree的标识、父commit的标识l tagp 是一个文件p 包含一个commit的标识案例案例blobblobtreetreecommitcommit对象模型对象模型gitgit statusstatusl 工作区相比暂存区工作区相比暂存区p 新增文件p 修改文件p 删除文件p 一致(git add)l 暂存区相比对象库暂存区相比对象库p 新增文件(git add)p 修改文件(git add)p 删除文件(git rm)p 一致(git commit)l 暂存区仅保留对象库当
14、前暂存区仅保留对象库当前分支的快照,分支的快照,git commit将将会替换当前快照,使得暂会替换当前快照,使得暂存区与对象库的当前分支存区与对象库的当前分支最新更新一致最新更新一致gitgit rmrmGIT通常只会增加内容,不用担心通常只会增加内容,不用担心丢失曾经有的数据丢失曾经有的数据GIT也支持彻底清除确认无效的数也支持彻底清除确认无效的数据,属于更高级的内容据,属于更高级的内容第四部分第四部分分支管理分支管理分支分支l 概念概念p 一个commit对象链:一条工作记录线mastermasterl 主分支主分支p 默认分支p 主体功能开发l 综合信息综合信息p 一个文件:.git/
15、refs/heads/masterp 文件内容:commit对象的SHA-1值HEADHEADl 当前当前commit对象引用对象引用p 一个文件:.git/HEADp 文件内容:分支引用(ref:refs/heads/master)commit对象的SHA-1值(4c9f4)再谈分支再谈分支l 概念概念p 一个文件:位于.git/refs/heads目录下p 文件内容:commit对象的SHA-1值l 分支管理分支管理p 创建分支:git branch p 删除分支:git branch d 在分支上工作在分支上工作l 切换到分支切换到分支p git checkout 用分支对应的快照更新暂
16、存区和工作区分支合并分支合并l git merge 冲突冲突l 冲突:冲突:修改了两个待合并分支里同一个文件的同一部分(比如同一行)冲突产生冲突产生冲突解决冲突解决第五部分第五部分团队协作团队协作远程版本库远程版本库l 管理管理p git clone:生成一个叫orgin的远程版本库p git remote v:查看远程版本库信息p git remote add :指定版本库名字l 路径路径p.git/refs/remotes/远程分支远程分支l 路径路径p.git/refs/remotes/l 访问方式访问方式p/:origin/masterl 跟踪分支(跟踪分支(tracking bran
17、ch)p git checkout/p git checkout b /从远程版本库抓取数据从远程版本库抓取数据l git fetch remote repo namep git fetch=git fetch originp 从远程仓库中拉取本地仓库中还没有的数据(所有分支)p 需要执行git checkout跟踪远程分支,从而产生本地分支再谈再谈克隆克隆版本库版本库l git clone p git init p git remote add origin p git fetch originp git checkout origin/master推送数据给远程版本库推送数据给远程版本库l
18、 git push remote repo name branch namep 将本地分支推送给的分支l git pushp 如果当前分支为跟踪分支,则推送至其跟踪的远程分支p 否则=git push origin,将当前分支推送给origin,在origin上的分支名称与当前分支名称相同本地计算机本地计算机版本库masterbranch1 gitgit pullpull版本版本服务器服务器版本库masterbranch1 branch2 本地分支远程分支masterBranch1 branch2 git fetchgit mergegit checkout mastergit pullgit mergegit checkout branch1git pull删除远程分支删除远程分支l git push:提问?