美文网首页
2021-10-14

2021-10-14

作者: 泥人冷风 | 来源:发表于2021-10-14 14:49 被阅读0次

    什么是 Git-flow?

    简单的说,Git-flow 就是利用 Git 分支能力的开发策略之一。 可以采用 Git-flow 来管理源代码以提高开发效率。 并且由于存在共同规则,可以最大限度地减少协作时出现的问题。 最近,很多项目都采用了 Git-flow 策略。 (并非所有项目都好)

    下面介绍 Git-flow 中使用的分支以及如何使用它们。

    Git-flow 分支


    参照:https://nvie.com/posts/a-successful-git-branching-model

    这是一个解释 Git-flow 的图表。 这里主要的主要分支是 master 分支和 develop 分支。 并且有支持主分支的feature、release和hotfix分支。

    • master

      • 管理作为产品发布给用户的源代码的分支
      • 按标签管理版本
      • 没有开发工作
    • develop

      • 实际执行开发工作的分支
      • 错误修复
      • 通过创建功能分支来开发新功能
    • feature

      • 基于develop分支创建的分支
      • 开发新功能
      • 开发完成后合并到开发分支
    • release

      • 基于develop分支创建的分支
      • 执行微调(例如错误修复)的分支,即在发布前进行 QA
      • 完成QA后,合并到master,开发分支
    • hotfix

      • 在发布版本中快速修复错误的分支
      • 合并到master,修改后立即开发分支

    这样,Git-flow 可以让你在管理源代码的同时,在创建、修改和合并分支的过程中明确每个分支的用途。

    让我们实际敲敲命令吧。

    让我们实际接触 Git-flow

    在这里,我们假设安装了 Git 和 Git-flow。

    首先,初始化 Git-flow。

    git flow init -d
    

    -d 选项是一个自动分配默认分支名称的选项。
    使用 git branch 命令检查分支信息。

    git branch
    * develop
      master
    

    可以看到,develop分支和master分支都是在develop分支中创建和检出的。

    feature分支中的功能开发

    现在让我们使用 start 命令来创建一个用于开发新功能的feature分支。

    git flow feature start <feature name>
    

    当我执行 git branch 命令并检查它时

    git branch
      develop
    * feature/<feature name>
      master
    

    已创建feature/<feature name>并自动检出,设置<feature name>,以便您了解要开发的功能。

    现在让我们在这个分支中开发新功能。 这一次,我将通过创建一个文本文件来替代它。

    touch gf-handson.txt
    

    现在功能开发已经完成,使用finish命令将其合并到开发分支中。

    git flow feature finish <feature name>
    

    通过执行此命令,将自动执行以下任务。

    • 在develop分支上checkout
    • 合并feature分支
    • 删除feature分支

    如果在 GitHub 等平台上与其他开发人员合作,还可以使用release命令将feature分支推送到存储库。

    git flow feature publish <feature name>
    

    相反,如果要从存储库中引入feature分支,请使用 pull 命令。

    git flow feature pull origin <feature name>
    

    准备发布release分支

    将发布的所有功能合并到develop分支后,在release分支中进行 QA。

    让我们创建一个release分支。

    git flow release start <version>
    

    另外,如果检查 一下git branch

    git branch
      develop
      master
    * release/<version>
    

    这样,release / <version> 分支就被创建并自动签出。 在这个分支上做 QA 工作。

    完成 QA 工作后,您就可以发布了。 现在,使用finish命令将其合并到 master 和 develop 分支。

    git flow release finish <version>
    

    通过执行此命令,将自动执行以下任务。

    • 将release分支合并到master分支
    • 将release分支合并到develop分支
    • 删除release分支

    如果正在与feature分支等其他开发人员协作,请使用publish命令推送到存储库。

    git flow release publish <version>
    

    使用 track 命令从存储库中引入release 分支。 这不是pull,所以要小心。

    git flow release track <version>
    

    发布

    此时,master分支拥有新发布版本的源代码。
    最后,将 master 分支与tag一起推送到存储库并发布它。

    git push --tags
    

    发布后错误修复

    如果发布版本出现紧急bug,hotfix分支会处理。
    首先,创建一个hotfix分支。

    git flow hotfix start <version>
    

    修复创建的 hotfix 分支中的紧急错误后,使用finish命令将其合并到 master 分支。

    git flow hotfix finish <version>
    

    通过执行此命令,将自动执行以下任务。

    • 将hotfix 分支合并到master分支
    • 将hotfix 分支合并到develop分支
    • 删除hotfix 分支

    这样,可以使用 Git-flow 模型让项目开发更加高效。

    最后

    至此,我已经解释了 Git-flow 的概念和开发流程。

    使用 Git-flow 进行开发时要记住的一件事是避免每个分支中的源代码冲突。 例如,从 develop 分支创建的功能分支应该始终包含 develop 的内容。 而在develop分支,在合并feature分支之前,需要保持没有feature分支的内容。

    而且如果你使用像 GitHub 这样的平台与你的团队或其他开发人员协作,经常进行推送和拉取以防止代码冲突。

    相关文章

      网友评论

          本文标题:2021-10-14

          本文链接:https://www.haomeiwen.com/subject/wktuoltx.html