• 1. 目录结构GIT 概述1GIT 基础2分支管理4团队协作5GIT 进阶3
  • 2. 第一部分 GIT 概述
  • 3. 为什么要版本管理?团队协作文件管理历史追踪冲突管理版本发布
  • 4. 本地计算机 版本库本地版本管理版本库:个人电脑/服务器 RCS: Revision Control System 可追踪修改历史 问题:如何协作?Version 3Version 2Version 1file检出
  • 5. 计算机Afile检出 版本服务器 版本库集中式版本管理版本库:版本服务器 VCS: Version Control System 又称CVCS(Central VCS) 有SVN、CVS、firefly等产品 问题: 服务器会停 网络会不通Version 3Version 2Version 1 计算机Bfile检出
  • 6. 版本服务器版本库分布式版本管理版本库 版本服务器 个人计算机 VCS: 又称DVCS(Distributed VCS) 有GIT、HG、bazaar等产品 问题: 乱成一团? 分支管理机制Version 3Version 2Version 1计算机A版本库Version 3Version 2Version 1计算机B版本库Version 3Version 2Version 1file检出file检出
  • 7. 来源:Linux内核版本管理 1991-2002,Linus Torvalds等通过补丁和归档维护 2002,引入分布式版本管理系统(BitKeeper) 2005,BitKeeper收回授权,Linus Torvalds开始研发GIT 2005.04.05,Linus Torvalds发布GIT第一版本 2005.06.05,GIT开始用于Linux内核版本管理 应用情况 Linux、Android、Eclipse、ProgreSQL、Perl、JQuery等GIT来源和现状
  • 8. GIT设计目标满足大规模项目需要快速简单完全分布高效存储
  • 9. 版本服务器版本库GIT工作模式版本库初始化 个人计算机从版本服务器同步 操作 90%以上的操作在个人计算机 添加文件 修改文件 提交变更 查看版本历史等 版本库同步 将本地修改传送 到版本服务器Version 3Version 2Version 1计算机A版本库Version 3Version 2Version 1计算机B版本库Version 3Version 2Version 1file检出file检出
  • 10. GIT文件存储
  • 11. 第二部分 GIT 基础
  • 12. 版本库结构
  • 13. Tortoisegit设置
  • 14. 创建版本库版本库:repository 创建方法 执行git init 示例 工作目录:E:\Repositories\GIT\RCMSDemo 在工作目录中点击鼠标右键 .git目录 版本库:暂存区和对象库
  • 15. 第一个提交创建文件Readme.txt 使用git add命令添加Readme.txt 使用git commit提交Readme.txt
  • 16. 修改文件修改Readme.txt 使用git add命令添加Readme.txt 使用git commit提交Readme.txt
  • 17. 克隆版本库示例 版本服务器:gitserver 版本服务器用户:gitusr 版本库:RCMSDoc 本地目录:F:\git
  • 18. 文件状态a工作区版本库版本管理工作区 工作目录:.git文件夹所处目录 文件状态 未跟踪:处于工作目录,但未被版本库管理的文件 已跟踪:已被版本库管理的文件,可能存在于工作目录,也可能不存在于工作目录中
  • 19. GIT文件状态工作区暂存区对象库修改文件暂存文件提交文件检出文件GIT文件 已被版本库管理的文件 已修改 在工作目录修改GIT文件 已暂存 对已修改的文件执行git暂存操作,将文件存入了暂存区 已提交 将已暂存的文件执行git提交操作,将文件存入对象库
  • 20. 本地计算机版本库Version mVersion …Version 1file本地版本库与服务器版本库(一)版本服务器版本库Version 3Version 2Version 1本地计算机版本库Version 3Version 2Version 1file检出git add、commit…git pushgit pull版本服务器版本库Version mVersion …Version 1①②③
  • 21. 远程协作(一)创建文件Readme.txt 使用git add命令添加Readme.txt 使用git commit提交Readme.txt至本地版本库xt 使用git push保存Readme.txt到服务器版
  • 22. 版本服务器版本库Version xVersion …Version 1本地计算机版本库Version mVersion …Version 1本地版本库与服务器版本库(二)版本服务器版本库Version 3Version 2Version 1本地计算机版本库Version 3Version 2Version 1git add、commit…git pushgit pull①②③版本服务器版本库Version nVersion …Version 1git pushgit pull④本地计算机版本库Version xVersion …Version 1⑤
  • 23. 远程协作(二)修改Readme.txt 使用git add命令添加Readme.txt 使用git commit提交Readme.txt 使用git pull获取服务器版本库更新 使用git push将Readme.txt保存至版本服务器
  • 24. GIT常用命令获得版本库 git init git clone 版本管理 git add git rm git commit 远程协作 git pull git push查看信息 git help git log git diff
  • 25. 第三部分 GIT 进阶
  • 26. 再谈暂存区和对象库暂存区 一个文件:.git/index 对象库 一个目录:.git/objects 存放版本库的各种对象
  • 27. 对象对象 每个对象都是一个文件 每个对象都用40位的SHA-1值标识:6ff87c4664981e4397625791c8ea3bbb5f2279a3 前两位作为目录名,后38位作为文件名 对象组成 类型:blob、tree、commit和tag 内容:对象文件的内容 大小:内容的大小
  • 28. 对象类型blob 是一个文件 存储文件的内容 tree 是一个文件 类似一个目录 包含其它tree和blobcommit 是一个文件 包含时间、作者、一个tree的标识、父commit的标识 tag 是一个文件 包含一个commit的标识
  • 29. 案例
  • 30. blob
  • 31. tree
  • 32. commit
  • 33. 对象模型
  • 34. git status工作区相比暂存区 新增文件 修改文件 删除文件 一致(git add) 暂存区相比对象库 新增文件(git add) 修改文件(git add) 删除文件(git rm) 一致(git commit)暂存区仅保留对象库当前分支的快照,git commit将会替换当前快照,使得暂存区与对象库的当前分支最新更新一致
  • 35. git rmGIT通常只会增加内容,不用担心丢失曾经有的数据 GIT也支持彻底清除确认无效的数据,属于更高级的内容
  • 36. 第四部分 分支管理
  • 37. 分支概念 一个commit对象链:一条工作记录线
  • 38. master主分支 默认分支 主体功能开发综合信息 一个文件:.git/refs/heads/master 文件内容:commit对象的SHA-1值
  • 39. HEAD当前commit对象引用 一个文件:.git/HEAD 文件内容: 分支引用(ref: refs/heads/master) commit对象的SHA-1值(4c9f4…)
  • 40. 再谈分支概念 一个文件:位于.git/refs/heads目录下 文件内容:commit对象的SHA-1值 分支管理 创建分支:git branch 删除分支:git branch –d
  • 41. 在分支上工作切换到分支 git checkout 用分支对应的快照更新暂存区和工作区
  • 42. 分支合并git merge
  • 43. 冲突冲突:修改了两个待合并分支里同一个文件的同一部分(比如同一行)
  • 44. 冲突产生
  • 45. 冲突解决
  • 46. 第五部分 团队协作
  • 47. 远程版本库管理 git clone :生成一个叫orgin的远程版本库 git remote –v:查看远程版本库信息 git remote add :指定版本库名字 路径 .git/refs/remotes/
  • 48. 远程分支路径 .git/refs/remotes// 访问方式 /:origin/master 跟踪分支(tracking branch) git checkout / git checkout –b /
  • 49. 从远程版本库抓取数据git fetch [remote repo name] git fetch = git fetch origin 从远程仓库中拉取本地仓库中还没有的数据(所有分支) 需要执行git checkout跟踪远程分支,从而产生本地分支
  • 50. 再谈克隆版本库git clone git init git remote add origin git fetch origin git checkout origin/master
  • 51. 推送数据给远程版本库git push [remote repo name] [branch name] 将本地分支推送给分支 git push 如果当前分支为跟踪分支,则推送至其跟踪的远程分支 否则=git push origin,将当前分支推送给origin,在origin上的分支名称与当前分支名称相同
  • 52. 本地计算机版本库masterbranch1 git pull版本服务器版本库masterbranch1 branch2 本地分支远程分支masterBranch1 branch2 git fetchgit mergegit checkout master git pullgit mergegit checkout branch1 git pull
  • 53. 删除远程分支git push :