学习使用git flow (基础)

1,416 阅读3分钟

流程图

一、git flow常用分支

1、Production分支(线上主分支)

也就是经常使用的Master分支,这个分支是最近发布到生产环境的代码,只能从其他分支合并,不能直接修改。

2、Develop分支(线下主分支)

这个分支是主要的开发分支,包含所有要发布到下一个Release的代码。

3、Feature分支(开发的新功能)

这个分支主要是用来开发一个新的功能,一旦开发完成,合并回Develop分支进入下一个Release。

4、Release分支(测试bug)

当发布一个新Release的时候,我们基于Develop分支创建一个Release分支,完成Release 后,合并到Master和Develop分支。

5、Hotfix分支(线上维护)

在Production发现新的Bug时候,我们需要创建一个Hotfix, 完成Hotfix后,我们合并回Master和Develop分支,所以Hotfix的改动会进入下一个Release。

二、开发者使用git flow流程

1、大致流程

1.从Develop分支中创建一个Feature的功能分支,开发完成后合并到Develop分支中,Develop将多个feature功能点整合推送到Release分支进行测试等。
2.测试不通过则打回给Develop分支再到开发者创建的Feature,进行修改;测试通过则合并到Develop分支中同时合并到master(Production分支)进行上线。
3.如果上线后出现bug,则返回到Hotfix分支上进行维护修改,改完后再次合并到master分支并同时合并到Develop分支中。

2、命令的使用

1、首先初始化,回车回车回车。。。

git flow init

2、基于Develop创建Feature功能分支

git flow feature start xxx        //feature/xxx分支就被创建

3、开发完合并到Develop中

git flow feature finish xxx       //合并之后一般会删除feature/xxx分支

4、Develop会推送给release进行测试,release分支是为了发布而存在的分支,基于develop分支被创建。在同一时间只能有一个release分支,在此分支上仅仅是较少代码的修复。否则,容易引起release分支不稳定。当release分支被创建之后,develop分支可能在准备另一个版本的,因此,当release分支merge回develop分支时候可能会出现冲突,需要手工解决冲突。

git flow release start v.1.0      //创建一个版本号为v.1.0的release分支

5、当完成release分支功能之后

git flow release finish v.1.0
<!--输入后执行以下操作-->
//1.分支merge回master分支;        // 2.使用release分支名称打tag;
//3.release分支merge回develop分支;   // 4.删除release分支

6、创建hotfix,用于线上bug修改

git flow hotfix start v.1.0

7、结束hotfix分支

git flow hotfix finish v.1.0    //把hotfix分支merge到master和develop分支,并且删除此分支

注意:如果bug修复时,存在release分支,那么hotfix会merge到release分支,不是develop了。

三、git flow的分支如何工作的

1、初始分支

所有的master上提交的分支都应该打上版本号的tag

2、Feature分支

Feature分支做完后,必须合并回Develop分支,合并完分支后一般会删点这个Feature分支,但是 我们也可以保留。

3、Release分支

1.Release分支基于Develop分支创建,打完Release分之后,我们可以在这个Release分支上测试,修改Bug等。
2.同时,其它开发人员可以基于开发新的Feature (记住:一旦打了Release分支之后不要从Develop分支上合并新的改动到Release分支)
3.发布Release分支时,合并Release到Master和Develop,同时在Master分支上打个Tag记住Release版本号,然后可以删除Release分支了。

4.维护分支Hotfix

hotfix分支基于Master分支创建,开发完后需要合并回Master和Develop分支,同时在Master上打一个版本号的tag。

END