git使用培训课件.pptx
Git使用培训,谭宗威2014-07-29,欢迎,1/16/2023,2,今天的内容概述,1/16/2023,3,学习目标,版本管理的作用掌握日常的操作团队协作,1/16/2023,4,版本管理的作用,1/16/2023,5,为什么要版本管理?,1/16/2023,6,常用版本管理介绍,1/16/2023,7,常见的版本管理软件,1/16/2023,8,版本管理的工作模式,1/16/2023,9,灵活性,健壮性,单机版(文件系统,RCS),分布式(Git、Mercurial),发展过程,集中式(CVS,SVN),1/16/2023,10,本地计算机,版本库,本地版本管理,版本库:个人电脑/服务器RCS:Revision Control System 可追踪修改历史问题:如何协作?,Version 3,Version 2,Version 1,file,检出,1/16/2023,11,计算机A,file,检出,版本服务器,版本库,集中式版本管理,版本库:版本服务器VCS:Version Control System 又称CVCS(Central VCS)有SVN、CVS、firefly等产品问题:服务器会停 网络会不通,Version 3,Version 2,Version 1,计算机B,file,检出,1/16/2023,12,版本服务器,版本库,分布式版本管理,版本库 版本服务器 个人计算机VCS:又称DVCS(Distributed VCS)有GIT、HG、bazaar等产品问题:乱成一团?分支管理机制,Version 3,Version 2,Version 1,计算机A,版本库,Version 3,Version 2,Version 1,计算机B,版本库,Version 3,Version 2,Version 1,file,检出,file,检出,1/16/2023,13,协作模式,锁定模型冲突合并模型,1/16/2023,14,常用术语,分支(Branch):在一个时间点,复制一份处于版本控制之下的文件,从这之后,这两份拷贝就可以独立的互不干扰的进行各自开发。取出(Check-out):一次“取出”,就是在本地创建一份仓库的工作拷贝。提交(Commit):一次“提交”,将本地的修改写回到仓库或合并到仓库。冲突(Conflict):当开发者们同时提交对同一文件的修改,而且版本系统不能把它们合并到一起,就会引起冲突,就需要人工来进行合并。合并(Merge):合并就是把所有对文件的修改统一到文件里仓库(Repository):仓库就是当前的和历史的处于版本控制之下的文件所在的地方,通常在服务器端。工作版本(Working copy):从档案库中取出一个本地端的复制,所有在档案库中的档案更动,都是从一个工作版本中修改而来的,这也是这名称的由来。,1/16/2023,15,Git介绍,1/16/2023,16,Git的诞生,2002年以前Linus个人以diff方式管理2002年至2005年BitMover公司的BitKeeper2005年以后Linus两个月开发出Git,1/16/2023,17,Git的发展,大部份开源软件GGCC,1/16/2023,18,GIT设计目标,1/16/2023,19,版本服务器,版本库,GIT工作模式,版本库初始化 个人计算机从版本服务器同步操作 90%以上的操作在个人计算机 添加文件 修改文件 提交变更 查看版本历史等版本库同步 将本地修改传送 到版本服务器,Version 3,Version 2,Version 1,计算机A,版本库,Version 3,Version 2,Version 1,计算机B,版本库,Version 3,Version 2,Version 1,file,检出,file,检出,1/16/2023,20,GIT文件存储,1/16/2023,21,第二部分GIT 基础,1/16/2023,22,版本库结构,1/16/2023,23,Tortoisegit设置,1/16/2023,24,创建版本库,版本库:repository创建方法执行git init示例工作目录:E:RepositoriesGITRCMSDemo在工作目录中点击鼠标右键.git目录版本库:暂存区和对象库,1/16/2023,25,第一个提交,创建文件Readme.txt使用git add命令添加Readme.txt使用git commit提交Readme.txt,修改文件,修改Readme.txt使用git add命令添加Readme.txt使用git commit提交Readme.txt,克隆版本库,示例版本服务器:gitserver版本服务器用户:gitusr版本库:RCMSDoc本地目录:F:git,文件状态a,工作区,版本库,版本管理,工作区工作目录:.git文件夹所处目录文件状态未跟踪:处于工作目录,但未被版本库管理的文件已跟踪:已被版本库管理的文件,可能存在于工作目录,也可能不存在于工作目录中,1/16/2023,29,GIT文件状态,工作区,暂存区,对象库,修改文件,暂存文件,提交文件,检出文件,GIT文件已被版本库管理的文件已修改在工作目录修改GIT文件已暂存对已修改的文件执行git暂存操作,将文件存入了暂存区已提交将已暂存的文件执行git提交操作,将文件存入对象库,1/16/2023,30,本地计算机,版本库,Version m,Version,Version 1,file,本地版本库与服务器版本库(一),版本服务器,版本库,Version 3,Version 2,Version 1,本地计算机,版本库,Version 3,Version 2,Version 1,file,检出,git add、commit,git push,git pull,版本服务器,版本库,Version m,Version,Version 1,1/16/2023,31,远程协作(一),创建文件Readme.txt使用git add命令添加Readme.txt使用git commit提交Readme.txt至本地版本库xt使用git push保存Readme.txt到服务器版,版本服务器,版本库,Version x,Version,Version 1,本地计算机,版本库,Version m,Version,Version 1,本地版本库与服务器版本库(二),版本服务器,版本库,Version 3,Version 2,Version 1,本地计算机,版本库,Version 3,Version 2,Version 1,git add、commit,git push,git pull,版本服务器,版本库,Version n,Version,Version 1,git push,git pull,本地计算机,版本库,Version x,Version,Version 1,1/16/2023,33,远程协作(二),修改Readme.txt使用git add命令添加Readme.txt使用git commit提交Readme.txt使用git pull获取服务器版本库更新使用git push将Readme.txt保存至版本服务器,GIT常用命令,获得版本库git initgit clone版本管理git addgit rmgit commit远程协作git pullgit push,查看信息git helpgit loggit diff,1/16/2023,35,第三部分GIT 进阶,1/16/2023,36,再谈暂存区和对象库,暂存区一个文件:.git/index对象库一个目录:.git/objects存放版本库的各种对象,1/16/2023,37,对象,对象每个对象都是一个文件每个对象都用40位的SHA-1值标识:6ff87c4664981e4397625791c8ea3bbb5f2279a3前两位作为目录名,后38位作为文件名对象组成类型:blob、tree、commit和tag内容:对象文件的内容大小:内容的大小,1/16/2023,38,对象类型,blob是一个文件存储文件的内容tree是一个文件类似一个目录包含其它tree和blob,commit是一个文件包含时间、作者、一个tree的标识、父commit的标识tag是一个文件包含一个commit的标识,1/16/2023,39,案例,1/16/2023,40,blob,1/16/2023,41,tree,1/16/2023,42,commit,1/16/2023,43,对象模型,1/16/2023,44,git status,工作区相比暂存区新增文件修改文件删除文件一致(git add)暂存区相比对象库新增文件(git add)修改文件(git add)删除文件(git rm)一致(git commit),暂存区仅保留对象库当前分支的快照,git commit将会替换当前快照,使得暂存区与对象库的当前分支最新更新一致,1/16/2023,45,git rm,GIT通常只会增加内容,不用担心丢失曾经有的数据GIT也支持彻底清除确认无效的数据,属于更高级的内容,1/16/2023,46,第四部分分支管理,1/16/2023,47,分支,概念一个commit对象链:一条工作记录线,1/16/2023,48,master,主分支默认分支主体功能开发,综合信息一个文件:.git/refs/heads/master文件内容:commit对象的SHA-1值,1/16/2023,49,HEAD,当前commit对象引用一个文件:.git/HEAD文件内容:分支引用(ref:refs/heads/master)commit对象的SHA-1值(4c9f4),1/16/2023,50,再谈分支,概念一个文件:位于.git/refs/heads目录下文件内容:commit对象的SHA-1值分支管理创建分支:git branch 删除分支:git branch d,1/16/2023,51,在分支上工作,切换到分支git checkout 用分支对应的快照更新暂存区和工作区,1/16/2023,52,分支合并,git merge,1/16/2023,53,冲突,冲突:修改了两个待合并分支里同一个文件的同一部分(比如同一行),1/16/2023,54,冲突产生,1/16/2023,55,冲突解决,1/16/2023,56,第五部分团队协作,1/16/2023,57,远程版本库,管理git clone:生成一个叫orgin的远程版本库git remote v:查看远程版本库信息git remote add:指定版本库名字路径.git/refs/remotes/,1/16/2023,58,远程分支,路径.git/refs/remotes/访问方式/:origin/master跟踪分支(tracking branch)git checkout/git checkout b/,1/16/2023,59,从远程版本库抓取数据,git fetch remote repo namegit fetch=git fetch origin从远程仓库中拉取本地仓库中还没有的数据(所有分支)需要执行git checkout跟踪远程分支,从而产生本地分支,1/16/2023,60,再谈克隆版本库,git clone git init git remote add origin git fetch origingit checkout origin/master,1/16/2023,61,推送数据给远程版本库,git push remote repo name branch name将本地分支推送给的分支git push如果当前分支为跟踪分支,则推送至其跟踪的远程分支否则=git push origin,将当前分支推送给origin,在origin上的分支名称与当前分支名称相同,1/16/2023,62,本地计算机,版本库,master,branch1,git pull,版本服务器,版本库,master,branch1,branch2,本地分支,远程分支,master,Branch1,branch2,git fetch,git merge,git checkout mastergit pull,git merge,git checkout branch1git pull,1/16/2023,63,删除远程分支,git push:,1/16/2023,64,提问?,1/16/2023,65,