admin 管理员组

文章数量: 887021


2024年2月18日发(作者:readprocessmemoryworld)

GIT分支流程开发规范

分支流程说明

o

简介

o

必读文章

分支命令规范

o

特性(功能)分支

o

bug修复分支、紧急bug修复分支

o

release分支

常用操作命令简介

o

基本操作

o

使用git flow简化操作

初始化

功能分支

预发布分支

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 在团队中的最佳实践—如何正确使用Git Flow

分支命令规范

特性(功能)分支

功能分支的分支名称应该为能够准确描述该功能的英文简要表述

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。

常用操作命令简介

基本操作

基本命令这里就不多说了,基本跟以前一样,唯一的区别是注意分支是从哪里拉去的以及分支的命名规范。涉及到的命令主要包含以下,大家自己学习:

git commit

git add [—all]

git push

git pull

git branch [-d]

git merge

git cherry-pick

git checkout [-b] BRANCH_NAME

git stash

分支操作参考 Git常用操作-分支管理

使用git flow简化操作

git flow是git的一个插件,可以极大程度的简化执行git标准分支流程的操作,可以在gitflow-avh安装。

如果是windows下通过安装包安装的git,则该插件默认已经包含,可以直接使用。

初始化

使用git flow init初始化项目

1.

$ git flow init

2.

Which branch should be used for bringing forth production releases?

3.

- develop

4.

- feature-fulltext

5.

- feature-vender

6.

- master

7.

Branch name for production releases: [master]

8.

Which branch should be used for integration of the "next release"?

9.

- develop

10.

- feature-fulltext

11.

- feature-vender

12.

Branch name for "next release" development: [develop]

13.

How to name your supporting branch prefixes?

14.

Feature branches? [feature/]

15.

Bugfix branches? [bugfix/]

16.

Release branches? [release/]

17.

Hotfix branches? [hotfix/]

18.

Support branches? [support/]

19.

Version tag prefix? []

20.

Hooks and filters directory?

[/Users/mylxsw/codes/work/e-business-3.0/.git/hooks]

功能分支

1.

2.

3.

4.

5.

6.

git flow feature

git flow feature start

git flow feature finish

git flow feature delete

git flow feature publish

git flow feature track

功能分支使用例子:

1.

$ git flow feature start material-add

2.

Switched to a new branch 'feature/material-add'

3.

Summary of actions:

4.

- A new branch 'feature/material-add' was created, based on 'develop'

5.

- You are now on branch 'feature/material-add'

6.

Now, start committing on your feature. When done, use:

7.

git flow feature finish material-add

8.

$ git status

9.

On branch feature/material-add

10.

nothing to commit, working directory clean

11.

$ git flow feature publish

12.

Total 0 (delta 0), reused 0 (delta 0)

13.

To :801/yunsom/

14.

* [new branch] feature/material-add -> feature/material-add

15.

Branch feature/material-add set up to track remote branch

feature/material-add from origin.

16.

Already on 'feature/material-add'

17.

Your branch is up-to-date with 'origin/feature/material-add'.

18.

Summary of actions:

19.

- The remote branch 'feature/material-add' was created or updated

20.

- The local branch 'feature/material-add' was configured to track the

remote branch

21.

- You are now on branch 'feature/material-add'

22.

$ vim

23.

$ git add --all

24.

$ git commit -m "modify readme file "

25.

[feature/material-add 7235bd4] modify readme file

26.

1 file changed, 1 insertion(+), 2 deletions(-)

27.

$ git push

28.

Counting objects: 3, done.

29.

Delta compression using up to 4 threads.

30.

Compressing objects: 100% (3/3), done.

31.

Writing objects: 100% (3/3), 303 bytes | 0 bytes/s, done.

32.

Total 3 (delta 2), reused 0 (delta 0)

33.

To :801/yunsom/

34.

0d4fb8f..7235bd4 feature/material-add -> feature/material-add

35.

$ git flow feature finish

36.

Switched to branch 'develop'

37.

Your branch is up-to-date with 'origin/develop'.

38.

Updating 0d4fb8f..7235bd4

39.

Fast-forward

40.

| 3 +--

41.

1 file changed, 1 insertion(+), 2 deletions(-)

42.

To :801/yunsom/

43.

- [deleted] feature/material-add

44.

Deleted branch feature/material-add (was 7235bd4).

45.

Summary of actions:

46.

- The feature branch 'feature/material-add' was merged into 'develop'

47.

- Feature branch 'feature/material-add' has been locally deleted; it

has been remotely deleted from 'origin'

48.

- You are now on branch 'develop'

49.

$ git branch

50.

* develop

51.

feature-fulltext

52.

feature-vender

53.

master

预发布分支

1.

2.

3.

4.

git flow release

git flow release start []

git flow release finish

git flow release delete

hotfix分支

1.

2.

3.

4.

git flow hotfix

git flow hotfix start []

git flow hotfix finish

git flow hotfix delete

git-flow 备忘清单

参考git-flow 备忘清单

发布代码流程

发布Release

首先切换到release分支,之后依次执行下面的命令

1.

git flow release finish

2.

git push --all

3.

git push --tags

发布Hotfix

首先切换到hotfix分支,依次执行下面的命令

1.

git flow hotfix finish

2.

git push --all

3.

git push --tags

总结

如果上面内容太多记不住,也没有关系,作为开发人员,刚开始的时候只要知道以下几点就足够了,其它的可以在碰到的时候再深入学习:

所有的新功能开发,bug修复(非紧急)都要从develop分支拉取新的分支进行开发,开发完成自测没有问题再合并到develop分支

release分支发布到测试环境,由开发人员创建release分支(需要测试人员提出需求)并发布到测试环境,如果测试过程中发现bug,需要开发人员track到该release分支修复bug,上线前需要测试人员提交merge request到master分支,准备上线,同时需要合并回develop分支。

只有紧急情况下才允许从master上拉取hotfix分支,hotfix分支需要最终同时合并到develop和master分支(共两次merge操作)

除了master和develop分支,其它分支在开发完成后都要删除


本文标签: 分支 开发 功能 需要 流程