GitFlow工作流

Gitflow是一种用于管理Git分支的颠覆性和新颖性策略。Gitflow在基于主干的工作流上越来越受欢迎,它被称为现代持续软件开发和DevOps模式的最佳实践。Gitflow同样可用于CI/CD。

什么是Gitflow?

Gitflow是一种多分支管理的Git分支模型。它由文森特·德里森 (Vincent Driessen) 在 nvie 首次发布。对比基于主干的开发模式,GItflow拥有数量更多,存活时间更长,更多提交的特点。在这种模式下,开发者创建一个功能分支并延迟将其合并到主干分支直到功能完成。这种长存活功能分支需要更多的协作才能合并并且存在更高的偏离主干分支的风险,有可能会引发冲突。

Gitflow适用于具备预定发布周期的项目和持续交付的DevOps最佳实践。这种工作流不会新增超过功能分支工作流所需的新概念或新命令。它为不同的分支分配了非常具体的角色,并定义了它们应该如何以及何时交互。除了功能分支之外,它还使用单独的分支来准备、维护和记录版本。当然,您还可以利用功能分支工作流程的所有优势:拉取请求、独立实验和更高效的协作。

入门

Gitflow 实际上只是 Git 工作流程的抽象概念。 这意味着它规定了要设置什么样的分支以及如何将它们合并在一起。 我们将在下面讨论分支的目的。 git-flow 工具集是一个具有安装过程的实际命令行工具。 git-flow 的安装过程很简单。 git-flow 的软件包可在多个操作系统上使用。 在 OSX 系统上,您可以执行 brew install git-flow。 在 Windows 上,您需要下载并安装 git-flow。 安装 git-flow 后,您可以通过执行 git flow init 在项目中使用它。 Git-flow 是一个围绕 Git 的包装器。 git flow init 命令是默认 git init 命令的扩展,除了为您创建分支外,不会更改存储库中的任何内容。

怎么运行

Develop和Main分支

相对采用单分支管理,Git工作流使用两个分支来记录项目记录。 主分支用作存储官方发布记录,开发分支用作功能的集成分支。 使用版本号标记主分支中的所有提交也很方便。

第一步是从main创建一个开发分支。一种简单的方法是让开发人员在本地创建一个空的开发分支并将其推送到服务器:

git branch develop git push -u origin develop

develop分支将包含项目的完整历史记录,而 main分支将只包含最新的生产版本。其他开发人员应从develop分支clone创建一个本地跟踪分支。

如果采用 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: [main] 
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   main

Feature分支

每个新功能都应该创建自己的功能分支,如果需要备份/协作可以将其推送到中央存储库。但是,feature分支不应该从main分支拷贝,而是从最新的开发分支拷贝创建。当一个功能完成后,它会被合并回develop。feature分支不应该直接与 main 交互。

 

通过以下命令创建feature分支

不使用git-flow插件:

git checkout develop 
git checkout -b feature_branch

使用git-flow插件:

git flow feature start feature_branch

当完成功能的开发工作后,下一步是将 feature_branch 合并到develop。

不使用git-flow插件:

git checkout develop 
git merge feature_branch

使用git-flow插件:

git flow feature finish feature_branch

Release分支

 

一旦 develop 具备发布条件,我们就可以从 develop 分支分支发布。创建release分支后会启动下一个发布周期,因此在此之后不能添加新功能——只有bugfix、文档编辑和其他面向发布的任务才能在release分支中进行。但具备发布条件后,发布分支会合并到 main 分支中,并打上版本号标记。此外,我们还应该重新合并到develop中,y因为从创建release以来可能存在变化。

使用专门的分支来准备发布,可以让一个团队继续完善当前版本,而另一个团队并行为下一个版本开发功能。它还创建了明确的开发阶段(例如,“本周我们开发版本 4.0”,我们可以在GIT库中实际看到4.0的功能分支)。

创建release分支是一个简单的分支操作,和feature分支一样,release分支也是基于develop分支的。可以使用以下方法创建新的release分支。

不使用git-flow插件:

git checkout develop 
git checkout -b release/0.1.0

使用git-flow插件:

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

一旦release分支完成发布,它将被合并到main和develop分支中,然后release分支将被删除。重新合并到develop分支中很重要,因为可能已将关键更新添加到release分支中,并且需要新功能可以使用它们。

通常采用以下方式完成release分支

不使用git-flow插件:

git checkout main 
git merge release/0.1.0

使用git-flow插件:

git flow release finish '0.1.0'

Hotfix分支

hotfix分支用于快速修补生产版本。hotfix分支和release分支、feature分支很像,只是它基于 main分支 而不是develop分支,它是唯一应该直接从 main 分支clone的分支。修复完成后,hotfix分支将合并到main分支和develop分支(或当前版本分支)中,并且main分支应使用更新的版本号进行标记。

拥有专门的Hotfix分支可以让团队解决问题而无需中断当前工作版本或等待下一个发布周期,Hotfix通常为临时分支。可以采用以下方式创建Hotfix分支:

不使用git-flow插件:

git checkout main git checkout -b hotfix_branch

使用git-flow插件:

git flow hotfix start hotfix_branch

与完成release分支类似,hotfix分支会合并到main分支和develop分支中。

不使用git-flow插件:

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

使用git-flow插件:

$ git flow hotfix finish hotfix_branch

示例

一个完整的分支流程的示例如下:

git checkout main 
git checkout -b develop 
git checkout -b feature_branch 
# work happens on feature branch 
git checkout develop 
git merge feature_branch 
git checkout main 
git merge develop 
git branch -d feature_branch

除了feature流程之外,还有一个 hotfix 示例如下:

git checkout main
git checkout -b hotfix_branch 
# work is done commits are added to the hotfix_branch 
git checkout develop 
git merge hotfix_branch 
git checkout main 
git merge hotfix_branch

参考

Gitflow Workflow | Atlassian Git TutorialA deep dive into the Gitflow Workflow. Learn if this Git workflow is right for you and your team with this comprehensive tutorial.https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow#:~:text=Gitflow%20is%20a%20legacy%20Git,software%20development%20and%20DevOps%20practices.icon-default.png?t=M276https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow#:~:text=Gitflow%20is%20a%20legacy%20Git,software%20development%20and%20DevOps%20practices.

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值