TypechoJoeTheme

MetMan's Blog

网站页面

Git Workflow学习(三)

MetMan博 主神仙
2024-11-19
/
0 评论
/
85 阅读
/
1588 个字
/
百度已收录
11/19
本文最后更新于 2024年11月19日,已超过 102天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!

前文介绍了功能分支工作流,下面继续介绍Gitflow工作流,原文链接见文末。

Gitflow 是一种典型的 Git 工作流,最初提出时被认为是管理 Git 分支的颠覆性新颖策略。现在基于Gitflow工作流越来越流行,被认为是现代持续软件开发和DevOps实践的最佳实践。Gitflow与CI/CD一起使用也可能具有挑战性。这篇文章详细介绍了 Gitflow。

什么是 Gitflow?

Gitflow 是一种替代的 Git 分支模型,涉及使用功能分支和多个主分支。它最初由"Vincent Driessen at nvie"发布并流行起来。与基于主干的开发相比,Gitflow 具有大量、寿命更长的分支和更大的提交。在此模型下,开发人员创建一个功能分支,并延迟将其合并到主干分支,直到功能完成。这些长期存在的功能分支需要更多的协作才能合并,并且偏离主干分支的风险更高。它们还可能引入冲突的更新。

Gitflow 可用于具有计划发布周期的项目和持续交付的DevOps最佳实践。此工作流不会添加任何超出功能分支工作流所需的新概念或命令。相反,它将非常具体的角色分配给不同的分支,并定义它们应该如何以及何时进行交互。除了featrue分支之外,它还使用单独的分支来准备、维护和记录版本。当然,您还可以利用 Feature Branch 工作流的所有优势:拉取请求、隔离实验和更高效的协作。

工作方式

Develop和main分支

此工作流使用两个分支来记录项目的历史记录,而不是单个main分支。main分支存储官方版本记录 ,develop分支充当功能的集成分支。使用版本号标记(tag)main分支中的所有提交也很方便。

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

git branch develop
git push -u origin develop

此分支将包含项目的完整历史记录,而main将包含精简版本。其他开发人员现在应该克隆中央存储库并创建一个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: [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

功能分支

步骤 1:创建存储库

每个新功能都应驻留在自己的分支中,这些分支可以推送到中央存储库进行备份/协作。但是,feature分支不从main分支分出,而是用develop作为父分支。当一个功能完成时,它会合并回develop分支中。功能不应直接与main分支交互。

请注意,就所有意图和目的而言,feature分支与develop分支相结合是功能分支工作流。但是,Gitflow 工作流程并不止于此。

Feature分支通常创建到最新的develop分支。

创建功能分支

没有 git-flow 扩展的情况:

git checkout develop
git checkout -b feature_branch  #基于develop分支创建功能分支

使用 git-flow 扩展时:

git flow feature start feature_branch

继续你的工作,像往常一样使用 Git。

完成功能分支

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

没有 git-flow 扩展的情况:

git checkout develop   # 切换回develop分支
git merge feature_branch

使用 git-flow 扩展:

git flow feature finish feature_branch

发布分支

一旦develop获得了足够的功能来发布(或者预定的发布日期即将到来),您就可以从develop中分叉出一个release分支。创建此分支将启动下一个发布周期,因此在此之后不能添加任何新功能-只有bug 修复、文档生成和其他面向发布的任务应进入此分支。一旦准备好发布,realease分支就会合并到main中并标记版本号。此外,它应该合并回develop ,该分支自发布启动以来可能有进展。

使用专用分支来准备版本,使一个团队可以完善当前版本,而另一个团队可以继续为下一个版本开发功能。它还创建了定义明确的开发阶段(例如,很容易说,“本周我们正在为 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'

一旦版本准备好发布,它将被合并到maindevelop中,然后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中分叉出来的分支。修复完成后,应将其合并到maindevelop两分支(或当前分支release)中,并应使用更新的版本号进行标记。

拥有专门的 bug 修复开发线,可以让您的团队解决问题,而无需中断工作流程的其余部分或等待下一个发布周期。您可以将维护分支视为直接与main一起工作的临时release分支。可以使用以下方法创建hotfix分支:

没有 git-flow 扩展的情况:

git checkout main
git checkout -b hotfix_branch

使用 git-flow 扩展时:

$ git flow hotfix start hotfix_branch

与完成release分支类似,hotfix分支被合并到maindevelop

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

$ git flow hotfix finish hotfix_branch

示例

演示功能分支流的完整示例如下。假设我们有一个main分支的存储库。

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

除了featurerelease 流之外,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 工作流。

关于 Gitflow 的一些关键要点是:

  • 该工作流非常适合基于版本发布的软件工作流。
  • Gitflow 为生产环境的修补程序提供了一个专用通道。

Gitflow 的整体流程为:

  1. develop分支是从main创建的
  2. release分支是从develop创建的
  3. feature分支是从develop创建的
  4. 当一个feature 完成时,它将合并到develop分支
  5. release分支完成后,它被合并到developmain
  6. 如果main检测到问题,则从main创建hotfix分支
  7. 一旦hotfix完成,它就会合并到developmain

资料来源

  1. https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
朗读
赞(0)
赞赏
感谢您的支持,我会继续努力哒!
版权属于:

MetMan's Blog

本文链接:

https://blog.metman.top/index.php/archives/154/(转载时请注明本文出处及文章链接)

评论 (0)

互动读者

标签云

最新回复

  1. tqymnonccc打酱油
    2024-09-27
  2. toibdpojay打酱油
    2024-09-22
  3. yvctxyevvw打酱油
    2024-09-22
  4. frezhwzwuq打酱油
    2024-09-22
登录
X
用户名
密码