GIT分支流程开发规范.docx
《GIT分支流程开发规范.docx》由会员分享,可在线阅读,更多相关《GIT分支流程开发规范.docx(9页珍藏版)》请在冰点文库上搜索。
GIT分支流程开发规范
GIT分支流程开发规范
∙分支流程说明
o简介
o必读文章
∙分支命令规范
o特性(功能)分支
obug修复分支、紧急bug修复分支
orelease分支
∙常用操作命令简介
o基本操作
o使用gitflow简化操作
▪初始化
▪功能分支
▪预发布分支
▪hotfix分支
▪git-flow备忘清单
∙发布代码流程
o发布Release
o发布Hotfix
∙总结
本文定位于为使用GIT标准分支开发流程的开发团队新人提供一份参考指南,其中的内容都是我们公司在研发团队初创时所遵循的一些开发流程标准,经过近一年的实践,虽说还有很多不足,但是随着团队经验的丰富和人员的扩张,我会适时地更新本文,分享我们在使用GIT开发流程中遇到的问题和解决方案。
分支流程说明
简介
项目中长期存在的两个分支
∙master:
主分支,负责记录上线版本的迭代,该分支代码与线上代码是完全一致的。
∙develop:
开发分支,该分支记录相对稳定的版本,所有的feature分支和bugfix分支都从该分支创建。
其它分支为短期分支,其完成功能开发之后需要删除
∙feature/*:
特性(功能)分支,用于开发新的功能,不同的功能创建不同的功能分支,功能分支开发完成并自测通过之后,需要合并到 develop 分支,之后删除该分支。
∙bugfix/*:
bug修复分支,从develop分支创建,用于修复不紧急的bug,普通bug均需要创建bugfix分支开发,开发完成自测没问题后合并到 develop 分支后,删除该分支。
∙release/*:
发布分支,用于代码上线准备,该分支从develop分支创建,创建之后由测试同学发布到测试环境进行测试,测试过程中发现bug需要开发人员在该release分支上进行bug修复,所有bug修复完后,在上线之前,需要合并该release分支到master分支和develop分支。
∙hotfix/*:
紧急bug修复分支,该分支只有在紧急情况下使用,从master分支创建,用于紧急修复线上bug,修复完成后,需要合并该分支到master分支以便上线,同时需要再合并到develop分支。
必读文章
团队中的Git实践Git在团队中的最佳实践—如何正确使用GitFlow
分支命令规范
特性(功能)分支
功能分支的分支名称应该为能够准确描述该功能的英文简要表述
1.feature/分支名称
例如,开发的功能为 新增商品到物料库,则可以创建名称为 feature/material-add的分支。
bug修复分支、紧急bug修复分支
bug修复分支的分支名称可以为Jira中bug代码或者是描述该bug的英文简称
1.bugfix/分支名称
2.hotfix/分支名称
比如,修复的bug在jira中代号为MATERIAL-1,则可以创建一个名为bugfix/MATERIAL-1的分支。
release分支
release分支为预发布分支,命名为本次发布的主要功能英文简称
1.release/分支名称
比如,本次上线物料库新增的功能,则分支名称可以为release/material-add。
常用操作命令简介
基本操作
基本命令这里就不多说了,基本跟以前一样,唯一的区别是注意分支是从哪里拉去的以及分支的命名规范。
涉及到的命令主要包含以下,大家自己学习:
∙gitcommit
∙gitadd[—all]
∙gitpush
∙gitpull
∙gitbranch[-d]
∙gitmerge
∙gitcherry-pick
∙gitcheckout[-b]BRANCH_NAME
∙gitstash
分支操作参考 Git常用操作-分支管理
使用gitflow简化操作
gitflow是git的一个插件,可以极大程度的简化执行git标准分支流程的操作,可以在gitflow-avh安装。
如果是windows下通过安装包安装的git,则该插件默认已经包含,可以直接使用。
初始化
使用gitflowinit初始化项目
1.$gitflowinit
2.Whichbranchshouldbeusedforbringingforthproductionreleases?
3.-develop
4.-feature-fulltext
5.-feature-vender
6.-master
7.Branchnameforproductionreleases:
[master]
8.Whichbranchshouldbeusedforintegrationofthe"nextrelease"?
9.-develop
10.-feature-fulltext
11.-feature-vender
12.Branchnamefor"nextrelease"development:
[develop]
13.Howtonameyoursupportingbranchprefixes?
14.Featurebranches?
[feature/]
15.Bugfixbranches?
[bugfix/]
16.Releasebranches?
[release/]
17.Hotfixbranches?
[hotfix/]
18.Supportbranches?
[support/]
19.Versiontagprefix?
[]
20.Hooksandfiltersdirectory?
[/Users/mylxsw/codes/work/e-business-3.0/.git/hooks]
功能分支
1.gitflowfeature
2.gitflowfeaturestart
3.gitflowfeaturefinish
4.gitflowfeaturedelete
5.gitflowfeaturepublish
6.gitflowfeaturetrack
功能分支使用例子:
1.$gitflowfeaturestartmaterial-add
2.Switchedtoanewbranch'feature/material-add'
3.Summaryofactions:
4.-Anewbranch'feature/material-add'wascreated,basedon'develop'
5.-Youarenowonbranch'feature/material-add'
6.Now,startcommittingonyourfeature.Whendone,use:
7.gitflowfeaturefinishmaterial-add
8.$gitstatus
9.Onbranchfeature/material-add
10.nothingtocommit,workingdirectoryclean
11.$gitflowfeaturepublish
12.Total0(delta0),reused0(delta0)
13.To:
801/yunsom/e-business-3.0.git
14.*[newbranch]feature/material-add->feature/material-add
15.Branchfeature/material-addsetuptotrackremotebranchfeature/material-addfromorigin.
16.Alreadyon'feature/material-add'
17.Yourbranchisup-to-datewith'origin/feature/material-add'.
18.Summaryofactions:
19.-Theremotebranch'feature/material-add'wascreatedorupdated
20.-Thelocalbranch'feature/material-add'wasconfiguredtotracktheremotebranch
21.-Youarenowonbranch'feature/material-add'
22.$vimREADME.md
23.$gitadd--all
24.$gitcommit-m"modifyreadmefile"
25.[feature/material-add7235bd4]modifyreadmefile
26.1filechanged,1insertion(+),2deletions(-)
27.$gitpush
28.Countingobjects:
3,done.
29.Deltacompressionusingupto4threads.
30.Compressingobjects:
100%(3/3),done.
31.Writingobjects:
100%(3/3),303bytes|0bytes/s,done.
32.Total3(delta2),reused0(delta0)
33.To:
801/yunsom/e-business-3.0.git
34.0d4fb8f..7235bd4feature/material-add->feature/material-add
35.$gitflowfeaturefinish
36.Switchedtobranch'develop'
37.Yourbranchisup-to-datewith'origin/develop'.
38.Updating0d4fb8f..7235bd4
39.Fast-forward
40.README.md|3+--
41.1filechanged,1insertion(+),2deletions(-)
42.To:
801/yunsom/e-business-3.0.git
43.-[deleted]feature/material-add
44.Deletedbranchfeature/material-add(was7235bd4).
45.Summaryofactions:
46.-Thefeaturebranch'feature/material-add'wasmergedinto'develop'
47.-Featurebranch'feature/material-add'hasbeenlocallydeleted;ithasbeenremotelydeletedfrom'origin'
48.-Youarenowonbranch'develop'
49.$gitbranch
50.*develop
51.feature-fulltext
52.feature-vender
53.master
预发布分支
1.gitflowrelease
2.gitflowreleasestart[]
3.gitflowreleasefinish
4.gitflowreleasedelete
hotfix分支
1.gitflowhotfix
2.gitflowhotfixstart[]
3.gitflowhotfixfinish
4.gitflowhotfixdelete
git-flow备忘清单
参考git-flow备忘清单
发布代码流程
发布Release
首先切换到release分支,之后依次执行下面的命令
1.gitflowreleasefinish
2.gitpush--all
3.gitpush--tags
发布Hotfix
首先切换到hotfix分支,依次执行下面的命令
1.gitflowhotfixfinish
2.gitpush--all
3.gitpush--tags
总结
如果上面内容太多记不住,也没有关系,作为开发人员,刚开始的时候只要知道以下几点就足够了,其它的可以在碰到的时候再深入学习:
∙所有的新功能开发,bug修复(非紧急)都要从develop分支拉取新的分支进行开发,开发完成自测没有问题再合并到develop分支
∙release分支发布到测试环境,由开发人员创建release分支(需要测试人员提出需求)并发布到测试环境,如果测试过程中发现bug,需要开发人员track到该release分支修复bug,上线前需要测试人员提交mergerequest到master分支,准备上线,同时需要合并回develop分支。
∙只有紧急情况下才允许从master上拉取hotfix分支,hotfix分支需要最终同时合并到develop和master分支(共两次merge操作)
∙除了master和develop分支,其它分支在开发完成后都要删除