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 来修复这个问题

    bash 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

    bash 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 的持续部署非常友好:可以快速在这些版本中部署与回滚,而不用关心存在多少变更与分支等等。

  • 相关阅读:
    数组方法之find
    检查数组中是否有NaN
    数组方法之includes
    数组方法之lastIndexOf
    数组方法之indexOf
    数组方法之forEach
    col-md-push-*和col-md-offset的区别
    35个jQuery小技巧!
    35个jQuery小技巧!
    VS 2013插件
  • 原文地址:https://www.cnblogs.com/onetwo/p/5555051.html
Copyright © 2011-2022 走看看