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

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

内容简介:关于

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版本号, 风险较大,建议指定参数


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

查看所有标签

猜你喜欢:

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

Python for Everyone

Python for Everyone

Cay S. Horstmann、Rance D. Necaise / John Wiley & Sons / 2013-4-26 / GBP 181.99

Cay Horstmann's" Python for Everyone "provides readers with step-by-step guidance, a feature that is immensely helpful for building confidence and providing an outline for the task at hand. "Problem S......一起来看看 《Python for Everyone》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具