searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Gitflow工作流介绍

2023-05-31 10:18:24
17
0

什么是Gitflow

Gitflow工作流(Gitflow Workflow)是2010年由Vincent Driessen发表的一篇博客里提出来的。它定义了一整套完善的基于Git分支模型的框架,结合了版本发布的研发流程,适合管理具有固定发布周期的大型项目。

和特性分支工作流相比,Gitflow工作流并没有引入任何新的概念。不同的地方在于,它强化了对Git分支模型的使用,结合产品或项目发布周期的特定需求,定义了各种不同类型的分支,每一种分支都有它自己特定的职责,并且分支之间什么时候、以什么样的方式交互,也都有相应的规则。下面我们就具体来看一下。

如何工作

Gitflow主要包括master和develop两个长期分支以及若干个feature、release、hotfix临时分支。Vincent Driessen在定义Gitflow工作流的同时还提供了配套的命令行工具git-flow。接下来会区分是否使用git-flow工具来介绍,让读者感受该工具带来的便利性。

Master 和 Develop分支

master分支:作为唯一一个正式发布的分支,是所有分支中最稳定的。只有在当前发布计划里的特性经过严格审核和测试通过后才会合并到master分支。当master分支后,通常会在master分支打上带了版本号信息的tag。

develop分支:Develop分支是根据master分支创建出来的,它作为一种集成分支(Integration Branch),是专门用来集成开发完成的各种特性的。Develop分支通常具有更加详细和完整的提交历史,包括一些很细节的提交记录。而master分支则因为是面向版本发布的,所以它的提交历史会略去这些细节,显得比较精简。

使用Gitflow工作流的第一步就是在现由master分支的基础上新建一个develop分支,一种简单的操作方式就是让一个开发者在本地创建个空的develop分支并推到远程:

git branch develop
git push -u origin develop

当使用git-flow命令行工具,只需要在现有的代码库执行git flow init命令就会创建develop分支:

$ git flow init


Initialized empty Git repository in ~/project/.git/
No branches exist yet. Base branches must be created now.
Branch name for production releases: [master]
Branch name for "next release" development: [develop]


How to name your supporting branch prefixes?
Feature branches? [feature/]
Release branches? [release/]
Hotfix branches? [hotfix/]
Support branches? [support/]
Version tag prefix? []


$ git branch
* develop
 master

Feature分支

Gitflow工作流里的每个新特性都有自己的feature分支,这一点和特性分支工作流是一样的。在Gitflow工作流中特性分支可以由开发人员保存到本地,也可以推到远程长裤进行备份以及与其他开发人员协同工作。需要注意的是,feature分支是基于develop分支创建出来的,而不是master。当feature分支开发结束后,需要合并到develop分支。feture分支从不直接跟master分支打交道。

创建feature分支

不使用git-flow工具:

git checkout develop
git checkout -b feature_branch

使用git-flow工具:

git flow feature start feature_branch

结束feature分支:

当feature分支结束时,需要合并到develop分支。

不使用git-flow工具:

git checkout develop
git merge feature_branch

使用git-flow工具:

git flow feature finish feature_branch

Release分支

但累积到足够多的新特性,或者一个预定的版本发布周期临近的时候,就会从develop分支建立一个release分支。一旦创建了release分支,就不允许再添加新的特性到当前release分支,只有是bug修复、文档编写和其他与版本相关相关的操作才能提交到当前release分支。一旦准备发布,release分支就需要合并到master分支并且打一个带版本号信息的tag。同时,需要将release分支合并回develop分支。

使用专门的分支来准备发布,这样就可以一个团队完善当前版本,而另一个团队可以继续为下一个版本开发功能。

创建release分支

不使用git-flow工具:

git checkout develop
git checkout -b release/1.0.0

使用git-flow工具:

$ git flow release start 0.1.0
Switched to a new branch 'release/1.0.0'

一旦release分支准备发布,它将被合并到master和develop分支中,然后release分支将被删除。

结束release分支

不使用git-flow工具:

git checkout main
git merge release/1.0.0

使用git-flow工具:

git flow release finish '1.0.0'

Hotfix分支

hotfix是唯一一个从master分支创建的分支,用于快速修复生产的问题。直接从master创建就不会对当前的开发工作造成影响或者需要等待下一个版本周期才能上线修复问题。当hotfix分支上的工作结束后,需要合并到master和develop(或者当前进行中的release分支),并且master需要打上更新了版本号的tag

创建release分支

不使用git-flow工具:

git checkout master
git checkout -b hotfix_branch

使用git-flow工具:

$ git flow hotfix start hotfix_branch

与结束release分支类似,hotfix分支也需要合并到master和develop分支。

结束hotfix分支

不使用git-flow工具:

git checkout master
git merge hotfix_branch
git checkout develop
git merge hotfix_branch
git branch -D hotfix_branch

使用git-flow工具:

$ git flow hotfix finish hotfix_branch
0条评论
0 / 1000
好****p
6文章数
2粉丝数
好****p
6 文章 | 2 粉丝
原创

Gitflow工作流介绍

2023-05-31 10:18:24
17
0

什么是Gitflow

Gitflow工作流(Gitflow Workflow)是2010年由Vincent Driessen发表的一篇博客里提出来的。它定义了一整套完善的基于Git分支模型的框架,结合了版本发布的研发流程,适合管理具有固定发布周期的大型项目。

和特性分支工作流相比,Gitflow工作流并没有引入任何新的概念。不同的地方在于,它强化了对Git分支模型的使用,结合产品或项目发布周期的特定需求,定义了各种不同类型的分支,每一种分支都有它自己特定的职责,并且分支之间什么时候、以什么样的方式交互,也都有相应的规则。下面我们就具体来看一下。

如何工作

Gitflow主要包括master和develop两个长期分支以及若干个feature、release、hotfix临时分支。Vincent Driessen在定义Gitflow工作流的同时还提供了配套的命令行工具git-flow。接下来会区分是否使用git-flow工具来介绍,让读者感受该工具带来的便利性。

Master 和 Develop分支

master分支:作为唯一一个正式发布的分支,是所有分支中最稳定的。只有在当前发布计划里的特性经过严格审核和测试通过后才会合并到master分支。当master分支后,通常会在master分支打上带了版本号信息的tag。

develop分支:Develop分支是根据master分支创建出来的,它作为一种集成分支(Integration Branch),是专门用来集成开发完成的各种特性的。Develop分支通常具有更加详细和完整的提交历史,包括一些很细节的提交记录。而master分支则因为是面向版本发布的,所以它的提交历史会略去这些细节,显得比较精简。

使用Gitflow工作流的第一步就是在现由master分支的基础上新建一个develop分支,一种简单的操作方式就是让一个开发者在本地创建个空的develop分支并推到远程:

git branch develop
git push -u origin develop

当使用git-flow命令行工具,只需要在现有的代码库执行git flow init命令就会创建develop分支:

$ git flow init


Initialized empty Git repository in ~/project/.git/
No branches exist yet. Base branches must be created now.
Branch name for production releases: [master]
Branch name for "next release" development: [develop]


How to name your supporting branch prefixes?
Feature branches? [feature/]
Release branches? [release/]
Hotfix branches? [hotfix/]
Support branches? [support/]
Version tag prefix? []


$ git branch
* develop
 master

Feature分支

Gitflow工作流里的每个新特性都有自己的feature分支,这一点和特性分支工作流是一样的。在Gitflow工作流中特性分支可以由开发人员保存到本地,也可以推到远程长裤进行备份以及与其他开发人员协同工作。需要注意的是,feature分支是基于develop分支创建出来的,而不是master。当feature分支开发结束后,需要合并到develop分支。feture分支从不直接跟master分支打交道。

创建feature分支

不使用git-flow工具:

git checkout develop
git checkout -b feature_branch

使用git-flow工具:

git flow feature start feature_branch

结束feature分支:

当feature分支结束时,需要合并到develop分支。

不使用git-flow工具:

git checkout develop
git merge feature_branch

使用git-flow工具:

git flow feature finish feature_branch

Release分支

但累积到足够多的新特性,或者一个预定的版本发布周期临近的时候,就会从develop分支建立一个release分支。一旦创建了release分支,就不允许再添加新的特性到当前release分支,只有是bug修复、文档编写和其他与版本相关相关的操作才能提交到当前release分支。一旦准备发布,release分支就需要合并到master分支并且打一个带版本号信息的tag。同时,需要将release分支合并回develop分支。

使用专门的分支来准备发布,这样就可以一个团队完善当前版本,而另一个团队可以继续为下一个版本开发功能。

创建release分支

不使用git-flow工具:

git checkout develop
git checkout -b release/1.0.0

使用git-flow工具:

$ git flow release start 0.1.0
Switched to a new branch 'release/1.0.0'

一旦release分支准备发布,它将被合并到master和develop分支中,然后release分支将被删除。

结束release分支

不使用git-flow工具:

git checkout main
git merge release/1.0.0

使用git-flow工具:

git flow release finish '1.0.0'

Hotfix分支

hotfix是唯一一个从master分支创建的分支,用于快速修复生产的问题。直接从master创建就不会对当前的开发工作造成影响或者需要等待下一个版本周期才能上线修复问题。当hotfix分支上的工作结束后,需要合并到master和develop(或者当前进行中的release分支),并且master需要打上更新了版本号的tag

创建release分支

不使用git-flow工具:

git checkout master
git checkout -b hotfix_branch

使用git-flow工具:

$ git flow hotfix start hotfix_branch

与结束release分支类似,hotfix分支也需要合并到master和develop分支。

结束hotfix分支

不使用git-flow工具:

git checkout master
git merge hotfix_branch
git checkout develop
git merge hotfix_branch
git branch -D hotfix_branch

使用git-flow工具:

$ git flow hotfix finish hotfix_branch
文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0