zoukankan      html  css  js  c++  java
  • 从一个前端项目实践 Git flow 的流程与参考

    Git flow 出自 A successful Git branching model,这里使用了一个前端项目配合本文稿实施了 git flow 并记录流程作出示例和参考,对 hotfix 与持续部署略有提及,本意是用作公司内部的技术安利。
    所用源码及文档本身见于 github jusfr/HelloGitflow

    前言

    Gitflow 是一种 git 分支管理工具——说是思想也不为过,它使用既定策略区分和管理开发、测试、生产环境的代码版本,对测试与持续集成友好,与敏捷、迭代的思路一致。

    1 准备工作

    1.1 创建空白目录

    mkdir HelloGitflow
    cd HelloGitflow
    

    1.2 开始当前目录工作,示例创建和保存一个 index.html

    <!DOCTYPE html>
    
    <html lang="en" xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
        <div></div>
    </body>
    </html>
    
    git add index.html
    git commit -m "init commit"
    
    

    2 Git flow init

    git flow init
    

    这里使用了默认配置,一路 next

    3 一个完整的开发周期

    3.1 任务拆解,示例添加了分支 about 和 navigation

    git flow feature start about
    git flow feature start navigation
    

    3.1

    任务拆解相当于 story 认领,实际开发中的步骤更加繁冗。

    3.2.1 about 分支创建了一个 about.html

    git checkout feature/about
    # more work to do
    git add about.html
    git commit -m "add about.html"
    

    3.2.1

    3.2.2 navigation 分支创建了一个 nav.html

    git checkout feature/navigation
    # more work to do
    git add nav.html
    git commit -m "add nav.html"
    

    3.2.2

    3.3 开始合并分支

    3.3.1 合并 about

    git flow feature finish about
    

    3.3.1

    3.3.2 合并 navigation,存在 merge 过程

    git flow feature finish navigation
    

    3.3.2

    3.4 版本发布

    3.4.1 当 feature 积累数量达到可以进行版本发布时,开始进行 release 发布

    git flow release start v0.1
    

    3.4.1

    3.4.2 部分内容需要修改,在这里为各页面添加了 title

    git add index.html about.html nav.html
    git commit -m "add title for each page"
    

    3.4.2

    3.4.3 结束当前 release 分支

    # git push 
    git flow release finish v0.1
    

    3.4.3

    4 连续的开发周期

    我们开始在远程分支上工作,可以在结束分支前先将其 push 到远程分支上避免未在本地保留的情况

    git remote add github https://github.com/jusfr/HelloGitflow.git
    git push github --all
    

    4.1

    虽然开出来很多分支,但是可以观察到 master 和合并了两次,且分别被标记为 v0.1 和 v0.2

    4.2

    不考虑测试等情况,标记 v0.1 和 v0.2 的 master 版本或者 release/v0.1 和 release/v0.2 都是可以部署的版本。

    5 线上的 bug 修复

    现在已经在 v0.2 基础上进行 account 和 react 的分支开发,但是发现线上的 v0.2 版本需要立即修复的问题,分支状态

    5.1

    开启 hotfix/v0.2.1 来修复这个问题

     git flow hotfix start v0.2.1
    

    在 hotfix/v0.2.1 的视角来看,它是从最近的 mater 分支checkout 下来的,所以对正在进行的 account 和 react 无影响

    5.2

    以全局视角来看,hotfix/v0.2.1 与 account 和 react 确实没有交集

    5.3

    现在问题修复,合并 hotfix/v0.2.1

    git flow hotfix finish 'v0.2.1'
    

    当然仍然可以先 push 到远程分支,可以看到进行了若干步操作

    1. 合并 hotfix/v0.2.1 到 master 分支,master 分支被打上 v0.2.1 的 tag
    2. 合并 master 到 develop 分支。

    在第2步中,如果 develop 有过变更,比如有过 feature 合并,那么可能存在冲突需要解决

    5.4

    在此示例中, master 分别被打上了 v0.1, v0.2, v0.2.1 标记,这对基于 master 的持续部署非常友好:可以快速在这些版本中部署与回滚,而不用关心存在多少变更与分支等等。

  • 相关阅读:
    UVa 10118 记忆化搜索 Free Candies
    CodeForces 568B DP Symmetric and Transitive
    UVa 11695 树的直径 Flight Planning
    UVa 10934 DP Dropping water balloons
    CodeForces 543D 树形DP Road Improvement
    CodeForces 570E DP Pig and Palindromes
    HDU 5396 区间DP 数学 Expression
    HDU 5402 模拟 构造 Travelling Salesman Problem
    HDU 5399 数学 Too Simple
    CodeForces 567F DP Mausoleum
  • 原文地址:https://www.cnblogs.com/Jusfr/p/5552572.html
Copyright © 2011-2022 走看看