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分支,其它分支在开发完成后都要删除
版权声明:本文标题:GIT分支流程开发规范 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1708214982h516947.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论