内容输出来源:拉钩教育Java就业训练营
1 版本控制系统概述
1.1 版本控制系统
版本控制系统能追踪项目,从开始到结束的整个过程。对编程人员而言,版本控制技术是团队协作开发的桥梁,助力于多人协作同步进行大型项目开发。
软件版本控制系统的核心任务:查阅项目历史操作记录、实现协同开发。
常见的两种版本控制类型:
集中式版本控制工具
集中式版本控制工具,版本仓库是集中存放在中央服务器的,team里每个人工作时,从中央服务器下载代码。每个人个人修改后,提交到中央版本仓库。提交(commit)代码需要联网(如SVN)
分布式版本控制工具
分布式版本控制系统可以没有 “中央服务器”,每个人的电脑上都是一个完整的版本仓库,这样工作的时候,不需要联网。因为版本仓库就在你自己的电脑上。多人协作只需要各自修改,开发完成即可,推送给对方【联网】,推送的时候是将整个版本仓库推过去。
(如Git)
1.2 Git
Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目的版本管理。
1.2.1 Git工作流程
Git本地仓库与远程仓库直接的交互流程图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yxwMxOqV-1617176316611)(Git.assets/Git.jpg)]
- Clone:克隆,从远程仓库中克隆代码到本地仓库,第一次操作
- Push:推送,代码完成后,需要和团队成员共享代码时,将代码推送到远程仓库。
- Pull:拉取,从远程库拉代码到本地库,自动进行合并(merge),最后放到工作区。
Git本地仓库操作流程
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cPsfxAwa-1617176316612)(Git.assets/Git-1617152490439.jpg)]
- checkout:将本地仓库的内容检出到工作区
- add:在提交前先将代码提交到暂存区
- commit:提交到本地仓库
1.2.2 基本概念
- 本地仓库: 在本地主机上的一个代码库,可以独立存在,也可以与远程仓库进行关联
工作区:对任何文件的修订(增删改),都先放在工作区,工作区不与任何仓库分支进行关联
暂存区:把修订的文件,从工作区经过add(添加)后与某一个仓库分支进行关联,只要进入缓存区的文件才能commit(提交)到本地仓库。 - 远程仓库 : 在局域网或互联网上的一个主机,存放代码库的主机或平台,比如GitHub、Gitee.com(码云)
- 分支:代码存放在仓库,默认是主分支(master),可以在主分支基础上创建很多子分支,比如develop(开发)、bugfix(bug修复)等。
.git隐藏目录中存储了很多配置信息、日志信息和文件版本信息、暂存区信息等。.Git文件夹中有很多文件,其中有一个index文件就是暂存区,也可以叫做stage。暂存区是一个临时保存修改文件的地方。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-URXVtmg6-1617176316615)(Git.assets/Git-1617153334376.jpg)]
2 分支管理
几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来进行重大的Bug修改、开发新的功能,以免影响开发主线。
- 在开发中,一般有如下分支使用原则与流程:
master (生产) 分支
线上分支,主分支,中小规模项目作为线上运行的应用对应的分支; - test(测试)分支
从master创建的分支,一般作为测试部门的测试分支,进行预发测试。
测试完成后,需要合并到master分支,进行上线,中小规模项目可省略此分支; - develop(开发)分支
从test创建分支,如果开发没有test分支,是从master创建的分支,一般作为开发部门的主要开发分支
如果没有其他并行开发不同期上线要求,都可以在此版本进行开发
阶段开发完成后,需要是合并到test分支继续测试,如果没有test分支,可直接合并到master分支。 - hotfix(bugfix)分支
从master派生的分支,一般作为线上bug修复使用,修复完成后需要合并到master、test、develop分支。
查看分支
# 查看本地分支信息
git branch
在 git branch 的输出内容中,有一个分支,前面带有 * 号,这标识我们当前所在的分支
# 查看相对详细的本地分支信息
git branch -v
# 查看包括远程仓库在内的分支信息
git branch -av
创建分支
当我们要修复一个 Bug,或者开发一个新特性,甚至是在初学的时候怕打乱原来的代码,都可以新建一个分支来避免对原来代码的影响。
# 新建一个名称为 dev 的分支
git branch dev
切换分支
当我们创建完分支以后,我们需要切换到新建的分支,否则,所有的修改,还是在原来的分支上。事实上,所有的改动,只能影响到当前所在的分支。
# 新建完 dev 分支以后,通过该命令切换到 dev 分支
git checkout dev
创建并切换分支
# 新建 dev 分支,并切换到该分支上
git checkout -b dev
合并分支
当我们修复完成一个 Bug,或者开发完成一个新特性,我们就会把相关的 Bug 或者 特性的上修改合并回原来的主分支上,这时候就需要 git merge 来做分支的合并。
首先需要切换回最终要合并到的分支
# 切换回 master 分支
git checkout master
# 将 dev 分支中的修改合并回 master 分支
git merge dev
删除分支
当之前创建的分支,完成了它的使命,如 Bug 修复完,分支合并以后,这个分支就不在需要了,就可以删除它。
# 删除 dev 分支
git branch -d dev
v
#### 删除分支
当之前创建的分支,完成了它的使命,如 Bug 修复完,分支合并以后,这个分支就不在需要了,就可以删除它。
```markdown
# 删除 dev 分支
git branch -d dev