Git基本概念
此系列是本人的Git学习笔记,完整文档可下载,详见:https://github.com/BRabbitFan/NoteGit
Git
Git是一个免费开源的 分布式 版本控制 系统.
版本控制
记录工程文件的变化 , 以便日后的查阅修订选择.
版本控制系统的分类
- 集中化 版本控制系统
用一个中央服务器存储管理工程文件 . 各开发人员从服务器下载其所需的代码段 , 工作完成后向服务器提交新代码. 管理员通过服务器管理不同人员的权限 . 集中化版本控制系统存储不同版本的差异 .- 优点 : 系统的维护相对轻松
- 缺点 : 服务器的单点故障将导致整个团队无法工作
- 典型 : SVN , CVS , Perforce
- 分布式 版本控制系统
客户端并不只是提取最新版本的文件快照 , 而是把代码仓库完整地镜像下来 . 同时通过压缩算法减小对存储空间的要求 . 每个客户端都相当于一个服务器 . 分布式版本管理系统存储不同版本的索引 .- 优点 : 不用担心中央服务器宕机的问题
- 缺点 : 每个客户端存储空间消耗相对大 (使用压缩算法之后只大了一点点)
- 典型 : Git , BitKeeper
Git的本地结构与代码托管中心
Git的本机结构分为三个区域
- 工作区 - 当前开发的工程文件
通过 git add 命令将文件提交至暂存区 - 暂存区 - 将要提交还未提交的代码
通过 git commit 命令将文件提交至本地库 - 本地库 - 历史版本的信息
本地库与远程库
本地库用于每人的直接开发工作 , 可以将本地库的新内容推送至远程库 , 也可以总远程库拉取新内容至本地库 .
远程库创建于代码托管中心 , 接受所有加入团队的人进行推送和拉取内容 .
团队内部协作基本流程
- 项目经理创建本地库 .
- 项目经理使用push操作将本地库内容推送至远程库 .
- 开发人员使用clone操作将远程库的内容下载到本地 . (自动创建本地库)
- 开发人员使用push操作加入团队 , 使用push操作提交新内容至远程库 .
- 项目经理 , 开发人员使用pull操作从远程库拉取新内容 .
跨团队协作基本流程
- A团队创建本地库 , 并推送至远程库 .
- B团队使用fork操作将A创建的远程库复制到自己的远程库中 .
- 双方的开发人员使用clone push pull等操作在己方的远程库下开发 .
- B团队使用pull request操作发出拉取请求 , A团队审核后进行merge合并操作 , 将内容合并到A的远程库中 .
代码托管中心
代码托管中心的分类
- 局域网 : 可使用GitLab服务器作为代码托管中心 , GitLab服务器需要自己搭建
- 公网 : 可使用GitHub , Gitee作为代码托管中心 , 不需要自己搭建服务器
分支
在版本控制的过程中 , 可以使用多条线同时推进多个任务 . 多条线指的就是多个分支 .
分支可以继续生成分支 , 多个分支也可以合并 .
当本地库创建的时 , 自动创建一个主分支 master .
创建/合并分支的时机
- 开发独立新功能 :
当开发一个新的独立功能时 , 可以开辟一个新的分支 .
当这个功能开发完成后 , 可以将该分支的最终版本合并入主分支 . - 热修复(hot-fix) :
当系统在持续运行中发现待修复的bug时(如web服务器) , 可以开辟一个新分支 .
当在新分支中bug修正完毕后 , 将该分支的最终版本合并入主分支 .
分支的优势 :
- 多个分支并行开发 , 互不影响 , 提高效率 .
- 一个分支的功能开发失败 , 直接删除该分支即可 , 不会影响其他部分 .