目录
- Branch 分支分类
- Branch 分支功能详解
- Branch 分支命令规范
- 分支用途详解
- 工作流程
- git关于分支的常用命令
Branch 分类
master分支长期与线上同步
develop分支长期相对稳定版本
feature/*分支短期从develop创建
bugfix/*分支短期从develop创建
release/*分支短期从develop创建
hotfix/*分支短期从master创建
Branch 功能详解
master负责记录上线版本的迭代,该分支代码与线上代码是完全一致的主分支。
develop该分支记录相对稳定的版本,所有的 feature 分支和 bugfix分支都从该分支创建。
开发分支feature/*用于开发新的功能,不同的功能创建不同的功能分支,功能分支开发完成并自测通过之后,需要合并到 develop 分支,之后删除该分支功能分支。
bugfix/*用于修复不紧急的 bug ,普通 bug 均需要创建 bugfix 分支开发,开发完成自测没问题后合并到 develop 分支后删除该分支bug修复分支。
release/*用于代码上线准备,该分支从 develop 分支创建,创建之后由测试同学发布到测试环境进行测试,测试过程中发现 bug需要开发人员在该 release 分支上进行 bug 修复,所有 bug修复完后,在上线之前,需要合并该 release 分支到 master分支和 develop 分支发布分支。
hotfix/*该分支只有在紧急情况下使用,从 master 分支创建,用于紧急修复线上 bug,修复完成后,需要合并该分支到 master 分支以便上线,同时需要再合并到 develop 分支紧急 bug修复分支。
Branch 命令规范 :
功能分支
格式:feature/功能名称
例如:feature/loginbug
修复分支
格式:bugfix/bug名称
例如:bugfix/add-user
紧急 bug 修复分支
格式:hotfix/bug名称
例如:hotfix/delete
预发布分支
格式:release/预发布版本名称
例如:release/add-user
分支用途详解
我们刚刚熟悉了git中常用到的分支,那么这些分支有什么意义呢? 我就这么说吧,如果你是一个人开发,那么这确实没多大用处,当你在一个团队时这就发挥了很大的作用。
一般情况下,master分支是和线上版本保持一致的,那么我们需要对她非常重视,一切开发任务都不能在这里进行,因为在开发过程中如果出现bug就会弄脏master分支,如果我们在develop分支上开发,不管出什么错误我们都不需要怕,因为master是干净的,实在不行可以从master重新拉取没有问题的项目对不对?
这个就是分支其中一个作用。现在是这样的情况:我们在develop分支上完成了项目,那么之后对各个分支怎么处理呢?
过程大致是这样的: 将我们的develop分支合并到release分支,这是以个预发布分支,这个预发布分支是交给测试的同学的,测试同学在release分支上拉取完整项目进行测试,在测试过程中发现了一个bug。
测试同学找到了开发同学,开发同学在release分支上修改好问题,所有问题都解决了,这时release分支合并到master分支和develop分支。这时开发同学的develop分支是最新的,master分支也是最新的。另外一种情况是这样的:线上产品使用过程中突然出现了一个bug,这是非常紧急的情况,这时需要处理的步骤大致如下:创建一个紧急bug分支名为hotfix(命名规则看上表),将master分支拉取到hotfix分支,
紧急修改完bug之后将hotfix同步到master分支和develop分支,再删除hotfix分支。世界就回复平静了!总之分支会让你在更安全的环境下开发,git里面什么后悔药都有的。
工作流程:
- 克隆项目
- 签出并创建 dev 分支,使其跟踪远程的 origin/dev 分支。
- 在dev分支基础上创建自己的分支 member* 。
- 在自己的分支上添加文件
- 在自己的分支上修改文件
- 合并到dev分支
- 推送dev分支到origin/dev分支
- 更新 .gitignore 文件从 dev 新建一个分支 ignore (如果预测变更频繁就建立一个远程分支,现在一般都有模板,偶尔有个没有忽略的直接在dev分支上改就可以了)更新忽略文件尽快合并到\推送到 origin/dev 分支 (避免两个组员同时更改该文件造成冲突。)
git 关于分支的常用命令
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
重命名分支:git branch -m oldbranchname newbranchname
我是ElyarAnwar,在技术的道路上摸爬滚打;
热爱生活,热爱技术;如果喜欢记得点赞;