Git使用介绍
毛新军
国防科技大学计算机学院
xjmao@
内容
分布式版本管理概述
分布式版本控制的基本思想
何为Git?
Git的基本理念、功能和服务
Git使用
Git的操作
问题提出
如何将多人开发的不同代码管理起来
程序代码存储
代码冲突处理
代码版本变更
程序代码追踪
工作量的统计……
需要对代码进行版本控制(RevisionControl)
张三
李四
王五
版本控制的重要性
版本控制是有效管理程序文档、提高协作效率的重要手段
多人协作(横向视角)
版本迭代(纵向视角)
开发者1
开发者2
开发者3
开发者4
项目管理者
v1
v2
v3
v4
版本控制概念
版本控制是对软件制品(程序、文档、数据等)的更改和管理,它是软件配置管理的重要组成部分
组织和保护软件制品:源代码和文档
实现跨区域、多人的协同开发
记载和追踪一个或者多个文件的历史记录
跟踪记录软件开发过程
统计软件开发工作量
版本控制的二种方式
集中式与分布式
集中式版本控制
集中式版本控制
版本库集中存放在中央服务器之中
开发前先从中央服务器取得最新版本
开发完再把自己的工作推送给中央服务器
中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完后再放回图书馆
特点
高度集中、难以有效支持协同开发
典型系统:CVS、SVN、ClearCase
版本库
开发者
开发者
开发者
分布式版本管理
分布式版本控制
有一个中央仓库
开发前在本机上拷贝一个完整软件仓库
开发完把自己工作提交到本地仓库中
需要同步给协作者时再递交到中央仓库
版本库分步存储于各协作者电脑中
优点
不依赖中央服务器、可在本地开发、有效支持协同开发
典型系统:Git
中央仓库
本地仓库
本地仓库
本地仓库
本地仓库
版本控制的发展
RCS(1982)
CVS(1990),SVN(2001)
Git(2005)
BitKeeper(1999)
何为Git?
Git是一种分布式的版本控制系统
支持存储代码、跟踪修订历史记录、合并代码更改等,可在需要时恢复较早的代码版本,可实现团队的高效协作
LinusTorvalds研制和开发
为了帮助管理Linux内核开发而开发的一个开源的版本控制软件
成为行业标准
Git是目前世界上最先进的分布式版本控制
LinusTorvalds
Git采用分部式管理模式
分布式版本管理
本地拥有完整版本库,支持离线操作
有效应对了中心服务器崩溃带来的影响
有效支持代码审查、持续集成等开发活动
Git的基本功能
版本管理
管理各种源代码和文档、切换不同版本等
过程管理
跟踪开发过程、查阅历史记录等
代码评审
可视化评估代码质量,决断是否合并代码等;
扩展功能
企业DevOps自动化、代码Issue联动管理;
……
Workspace:工作区
Index/Stage:暂存区
Repository:仓库区(或本地仓库)
Git的仓库构成
远端仓库
本地端仓库
本地仓库
暂存区
工作区
Remote:远程仓库
Git版本管理的基本概念
仓库(Repository)软件所有文件的完整修订历史
版本(Revision)代码库的编号方案,如Tag0.1
分支(Branch)对代码库并行修改时的代码库副本
如master,develop,branch1,…
提交(Commit)对分支的一次修订
下拉(Pull)将远程的一个分支读取并保存到本地分支
推送(Push)将本地分支代码发送到远程某个分支
合并(Merge)将对相同文件在不同分支的修改合并到一个分支中
冲突(Conflict)当两个分支中存在对同一文件的不同修改,并试图合并这两个分支时,就会发生冲突
master和develop是标准分支,master是缺省的主分支
Git各项操作
本地仓库
暂存区
工作区
Git分支的理念和操作
使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线
master
branch2
branch1
create
merge
commit
create
merge
commit
分支本地操作
分支本地操作
Git的使用
分支管理流程:初始化过程(组长)
1创建版本库(默认master分支),push初始代码
2创建远程develop分支
分支管理流程:基本过程(组员)
3克隆代码,切换到develop分支
4新建自己的分支my_branch(各组员分支名不同)
5修改my-branch:正常开发,修改完成后将修改的内容推送到远程my_branch分支
合并分支:基本过程(组长)
6切换develop分支,pull代码
7合并组员的分支(my_branch)到develop分支
8解决