前端小纠结--集成gitflow和standard-version使用

栏目: 编程工具 · 发布时间: 4年前

内容简介:关于

git flow 源自这篇文章 a-successful-git-branching-model ,大神!!!。

关于 git flow 的使用,请看以下链接,非常多的文章,写的非常好。

如何正确的使用git flow

git-flow 备忘清单

git-branching-model 如图

前端小纠结--集成gitflow和standard-version使用

git flow 常用的分支

以下部分内容来自 如何正确的使用git flow 博客和gitflow-examples

develop
release/*
master
hotfix/*

git Flow如何工作

所有在Master分支上的Commit应该Tag

前端小纠结--集成gitflow和standard-version使用

feature 分支

分支名 feature/*

Feature分支做完后,必须合并回Develop分支, 合并完分支后一般会删点这个Feature分支

前端小纠结--集成gitflow和standard-version使用
前端小纠结--集成gitflow和standard-version使用

release 分支

分支名 release/*

Release分支基于Develop分支创建,打完Release分之后,我们可以在这个Release分支上测试,修改Bug等。同时,其它开发人员可以基于开发新的Feature (记住: 一旦打了Release分支之后不要从Develop分支上合并新的改动到Release分支 )

发布Release分支时,合并Release到Master和Develop, 同时在Master分支上打个Tag记住Release版本号,然后可以删除Release分支了。

前端小纠结--集成gitflow和standard-version使用

minor版本发布

前端小纠结--集成gitflow和standard-version使用

major版本发布

前端小纠结--集成gitflow和standard-version使用

hotfix 分支

分支名 hotfix/*

hotfix分支基于Master分支创建,开发完后需要合并回Master和Develop分支,同时在Master上打一个tag

前端小纠结--集成gitflow和standard-version使用

hotfix修复分支

前端小纠结--集成gitflow和standard-version使用

support 分支

GitFlow没有真正涵盖 support 分支,如果需要同时维护多个主要版本,则必不可少。 您也可以使用 support 分支来支持 minor 版本。 如果您只是支持 major ,命名 support/<major>.x ,minor版本为 support/<major>.<minor>.x

多版本hotfix修复

前端小纠结--集成gitflow和standard-version使用

多版本的release

多版本的 git flowrelease 流程只是把master替换为需要维护的分支。

前端小纠结--集成gitflow和standard-version使用

git flow 工具的使用

windows和mac建议使用 sourcetree 客户端,内置了 git flow 流程,具体的使用方法,请自行搜索.

当然windows下的git for windows(git bash中)也内置了gitflow-scripts,请参考 升级版git-flow-completion 完成自动补全功能

如果使用linux,内置了gitflow-scripts(不知道是那个版本),很不负责任的建议使用 升级版gitflow-avh .

关于使用git flow工具使用可以参考如何正确使用Git Flow这篇博客文章

前端小纠结--集成gitflow和standard-version使用

上图是sourcetree中git flow的菜单

git flowstandard-version 搭配使用

请务必在熟悉 git flow 的基础上集成使用 standard-version ,因为两个 工具 的使用不当,会造成冲突。

git flow 流程中 standard-version 使用

standard-version 的作用就是生成 changelog 更新 package.jsonpackage.lock.json 中的 version 字段。所以它在 git flow 中使用受 git flow 的流程限制。 目前我的经验是只能在 git flowrelease/*hotfix/* 分支中使用。 因为只有这两个分支涉及到发版流程,而 changelog 只有在发版时刻才生成。

git flowstandard-version 冲突的tag功能

git flowstandard-version 在使用的过程中,都有自动打 tag 的功能,但是两者都支持跳过 tag 阶段,所以这也是这两个工具冲突的地方,建议从两者中 选取其一

  • standard-version 跳过 tag 方法

    // 方法一: package.json添加配置
    {
        "standard-version": {
            "skip": {
                "tag": true
            }
        }
    }
    复制代码
    # 方法二:命令行中添加参数
    standard-version -r minor --skip.tag
    复制代码
  • git flow 跳过 tag 的方法

    # 跳过tag,并且可以自定义commit message(为了让commit message符合约定提交的格式规范)
    git flow release finish v0.2.0 -n -m "chore(release): 0.2.0" 
    复制代码

standard-version 运行时机

  1. release 分支流程中运行

git flowrelease finish 阶段是把 release/* 分支合并到 masterdevelop ,所以 standard-version 就是要在 finish 结束之前 运行 生成 changelog .

# 1. 模拟一个release流程
git flow release start v0.2.0

# 2. 做一些修改或者commit
git commit -m 'fix(src): 修复问题'

# 3. (可选)如果需要在release/* 分支生成beta测试阶段的changelog
npx standard-version -p beta

# 4. release finish 之前
# standard-version不打tag,使用git flow的tag功能
npx standard-version -r v0.2.0

# 5. 正式发布release,自定义commit message为了符合约定式提交的格式
git flow release finish v0.2.0 -m "chore(release): 0.2.0"

# 如果你使用了standard-version的tag功能,git flow应该跳过tag
# git flow release finish v0.2.0 -n -m "chore(release): 0.2.0"
复制代码
  1. hotfix分支流程中运行

hotfix finish 阶段和 release 非常像是把 hotfix/* 分支合并到 masterdevelop 但是是否在 hotfix 分支生成 changelog 还需要自行决定( 有冲突的风险

# 1. 模拟一个hotfix流程
git flow hotfix start v0.2.1

# 2. 做一些修改或者commit
git commit -m 'fix(src): 修复问题'

# 3. finish finish 之前
# standard-version不打tag,使用git flow的tag功能
npx standard-version -r v0.2.1 
# patch版本号可以使用 patch 替代
# npx standard-version -r patch

# 正式发布hotfix,自定义commit message为了符合约定式提交的格式
git flow hotfix finish v0.2.1 -m "chore(release): 0.2.1"

# 如果你使用了standard-version的tag功能,git flow应该跳过tag
# git flow hotfix finish v0.2.0 -n -m "chore(release): 0.2.1"
复制代码

standard-versiongit flow 不同流程阶段注意的问题

  1. standard-versionrelease 流程中注意事项:

    • release中生成beta版本的 changelog

      前置条件:

      • release 在hotfix之前创建
      • hotfix中生成changelog
      • release中生成beta版的changelog

      release分支的创建时机很重要, git flow 流程中release在 hotfix 之后创建

      如果创建release分支 之后 ,出现并修复hotfix并且在hotfix生成changelog, hotfix finish 之后 release finish 就会造成release合并到master和develop时出现 冲突 .

      解决方案:

      release 分支包含 hotfix 内容(release 分支在hotfix之后创建,或者hotfix提取成patch,在release分支上apply)( git flow流程中hotfix是包含在next release中的

      • 如果有更好的方法请告诉我 ~):
  2. standard-versionhotfix 流程中注意事项:

    • hotfix 中生成changelog

      • release分支在 hotfix finish 之前建立 ,会出现在release分支一样的问题
    • hotfix 分支不生成changelog

      • release分支在hotfix finish 之前建立 ,会造成 hotfix 修复的的日志无法出现在changelog中

    解决方法:

    release 分支包含 hotfix 内容(release 分支在hotfix之后创建,或者hotfix提取成patch,在release分支上apply)

  3. standard-version 不带参数使用

    # 如果直接在分支上,使用
    standard-version
    复制代码

    如果不指定参数直接使用 standard-version 命令, standard-version 会自动分析 commit message 类型,如果包含patch就累加patch,有feat就自动累加minor,有 break change 就自动生成 major版本号, 风险较大,建议指定参数


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

JavaScript入门经典

JavaScript入门经典

Paul Wilton、Jeremy McPeak / 施宏斌 / 清华大学出版社 / 2009-2 / 98.00元

《Java Script入门经典(第3版)》首先介绍了J avaScript的基本语法,并介绍了如何发挥JavaScript中对象的威力。《Java Script入门经典(第3版)》还介绍了如何操纵最新版本浏览器所提供的BOM对象。在《Java Script入门经典(第3版)》的高级主题中,将介绍如何使用cookie,以及如何应用DHTML技术使Web页面焕发动感和活力。另外,《Java Scri......一起来看看 《JavaScript入门经典》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具