git flow工作流

git flow工作流gitflow 使用介绍

1.GitFlow是什么

GitFlow是一套基于git的工作流程,这个工作流程围绕着项目发布定义了一个严格的如何建立分支的模型。
GitFlow规定了如何建立、合并分支,如何发布,如何维护历史版本等工作流程。简单说就是每一个功能特性的开发是在分支上开发,而不是在主干开发,分支开发完毕后再合并到主干上。
gitFlow




2.GitFlow的优势

GitFlow工作流程的优势在于:

  • 还处于半成品状态的feature不会影响到主干
  • 各个开发人员之间做自己的分支,互不干扰
  • 主干永远处于可编译、可运行的状态

3.GitFlow分支简述

2.1主干分支(master和develop)
1.master分支存储了发布版本的历史,各个版本通过tag来标记(git tag -a v0.1
2.develop分支是一个集成分支,用来整合各个功能feature分支,也方便给master分支上的所有提交分配一个版本号。
主干分支






除了masterdevelop主分支线,其他的分支都是临时的分支,有一定的生命周期的,其余的工作流程分支都是围绕这两个分支之间的区别进行的。

2.2功能分支(feature)
功能分支
开发每个功能都必须新开个feature分支,feature分支派生自develop分支。开发完成后要合并回develop分支。feature分支永远不会和master分支打交道。




2.3待发布分支(release)
待发布分支
release分支不是一个放正式发布产品的分支,可以理解为“预发布”或者“待发布”分支。
当开发的功能完成并满足发布的条件时,将这些满足条件的feature分支合并到develop分支上,然后从develop分支开出一个release分支,开始准备一个发布版本。
release分支上,不能再添加新的功能,但是我们可以:








  1. 将分支打包给测试人员测试
  2. 在这个分支上修改bug
  3. 编写发布文档

当到发布日时,发布相关的工作都完成后,release分支合并回master分支,并打出版本标签,发布完成后,release分支合还要并回develop分支。

2.4维护分支(hotfix)
维护分支
维护分支也就是bug修复分支,用来快速修复生产环境的紧急问题。




项目发布后或多或少会有一些bug存在,而bug的修复工作并不适合在develop上做,这是因为:

  1. develop分支上可能包含还未验证过的feature
  2. 用户未必需要develop上的feature
  3. develop还不能马上发布,而客户急需这个bug的修复。

这个分支是唯一一个开放过程中直接从master分支派生来的分支。
快速的修复问题后,hotfix分支应该被合并回master分支,同时也要合并回develop分支,这样develop分支也能享受到bug修复的好处。然后master分支需要打一个版本标签,例如v0.11。

4.GitFlow的命名约定

  • 主分支名称:master
  • 主开发分支名称:develop
  • 标签(tag)名称:v,如:v1.0.0
  • 新功能开发分支名称:feature- or feature/,如:feature-games或feature/games
  • 发布分支名称:release- or release/,如:release-1.0.0或release/1.0.0
  • 维护分支名称:hotfix- or hotfix/ ,如:hotfix-update或hotfix/update

5.GitFlow的工作流程

5.1 创建develop分支
在本地master基础上创建一个develop分支,然后push到服务器;

git branch develop git push -u origin develop 

以后这个分支将会包含项目的全部历史,而master分支将只包含了部分历史。
其它开发者这时应该克隆中央仓库(如果已经克隆过该项目,则不需要执行以下第一条命令。),建好develop分支的跟踪分支:

git clone ssh://user@host/path/to/repo.git git checkout -b develop origin/develop 

5.2 新建feature分支
新建feature分支
基于develop分支创建新功能分支:




git checkout -b feature/demo develop 

推送到远程仓库,共享:

git push 

在此分支上开发提交代码:

git status git add git commit -m '*' 

5.3 完成新功能开发(合并feature分支到develop)
完成新功能开发
当确定新功能开发完成,且联调测试通过,并且新功能负责人已经得到合并feature分支到develop分支的允许;这样才能合并feature分支到develop




git pull origin develop git checkout develop git merge --no-ff feature/demo git push git branch -d feature/demo 

第一条命令是确保在合并新功能之前,develop分支是最新的。
新功能分支,永远不可以直接合并到master分支。合并可能会有冲突,应该谨慎处理冲突。

5.4 新建待发布分支release
新建待发布分支
项目准备发布时,基于develop分支新建一个待发布分支release,确立版本号:




git checkout -b release/v0.1 develop 

推送到远程仓库共享:

git push 

这个分支是清理发布、执行所有测试、更新文档和其它为下个发布做准备操作的地方,像是一个专门用于改善发布的功能分支。

5.5 release分支合并到master发布
如果准备好了对外发布,就将release分支合并到master分支和develop分支上,并删除发布分支。
发布分支
release分支合并到master分支:






git checkout master git merge --on-off release/v0.1 git push 

release分支合并到develop分支,合并完成后并删除发布分支:

git checkout develop git merge --on-off release/v0.1 git push git branch -d release/v0.1 

合并回develop分支很重要,因为在发布分支中已经提交的更新需要在后面的新功能中也要是可用的。

发布分支是作为功能开发(develop分支)和对外发布(master分支)间的缓冲。只要有合并到master分支,就应该打好Tag以方便跟踪。

git tag -a v0.1 -m 'Initial public release' master git push --tags 

5.6 线上Bug修复流程
线上Bug修复
当终端用户,反馈系统有bug时,为了处理bug,需要从master中创建出维护分支hotfix,等到bug修复完成,需要合并回master




基于master新建hotfix分支:

git checkout -b hotfix/v0.1.0.1 master 

当问题修复完成,并测试通过后,将hotfix分支合并到master分支和develop分支,并打出一个标签。

hotfix分支合并到master分支:

git checkout master git merge --on-off hotfix/v0.1.0.1 git push 

hotfix分支合并到develop分支,合并完成后删除hotfix分支:

git checkout develop git merge --on-off hotfix/v0.1.1 git push git branch -d hotfix/v0.1.1 

打标签:

git tag -a v0.1.1 -m 'Initial public release' master git push --tags 

6.git flow工作流程也可以使用git flow工具完成

GitFlow不仅仅是一种规范,还提供了一套方便的工具。大大简化了执行GitFlow的过程。

6.1 安装
1.OSX

$ brew install git-flow 

2.Debian/Ubuntu Linux

$ apt-get install git-flow 

3.Windows(cygwin

$ wget -q -O - --no-check-certificate https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | bash 

6.2 Initialize
对一个git仓库配置一下git flow。主要是一些命名规范,比如feature分支的前缀,hotfix分支的前缀等。一般用默认值就行。

git flow init 

6.3 新建feature分支
develop开启一个新的分支:

git flow feature start MYFEATURE 

这个命令会从develop分出一个分支,然后切换到这个分支上面。

6.4 合并feature分支到develop
一个feature分支开发完毕后,要做以下事情:

  • 把 MYFEATURE 合并到 develop
  • 把这个分支干掉
  • 切换回develop分支
git flow feature finish FEATURE_NAME 

6.5 把feature分支推送到服务器
果你想让别人和你一起开发MYFEATURE分支,那就把这个分支push到服务器上

git flow feature publish MYFEATURE 

获得一个别人push到服务器上的feature分支:

git flow feature pull origin MYFEATURE 

6.6 新建release分支
创建一个release分支,派生自develop分支:

git flow release start RELEASE 

6.7 把feature分支推送到服务器

git flow release publish RELEASE 

6.8 合并release分支到master和develop
一个release分支结束后,需要做以下工作:

  • 把release分支合并回master
  • 给本次发布打tag
  • 同时把release分支合并回develop
  • 干掉release分支
git flow release finish RELEASE 

最后不要忘记把tag push到服务器git push --tags

6.9 新建hotfix分支
开启一个hotfix分支:

git flow hotfix start VERSION 

结束一个hotfix分支,和release一样,同时合并回developmaster

git flow hotfix finish VERSION 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/211652.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午9:56
下一篇 2026年3月18日 下午9:56


相关推荐

  • consolewriteline用法_reviewmodule

    consolewriteline用法_reviewmodule严格模式ES6的模块自动采用严格模式,不管你有没有在模块头部加上"usestrict";。严格模式的限制如下变量必须声明后再使用函数的参数不能有同名属性,否则报错不能

    2022年7月31日
    9
  • C++超市管理系统(直接可以运行)

    C++超市管理系统(直接可以运行)C 超市管理系统心得写这个东西最重要环节不是上手去实现代码 而是再此之前的整体的系统分析 分析整个系统所需要定义的类 以及不同类实现的功能 以及类与类之间的消息的传递 最重要的还有模块之间的解耦 为后续的迭代 二次开发打好基础 由于还有两天就开学了 所以本人直接就略过最重要的一步系统分析 直接开始敲了 边敲边考虑类的设计 这样导致的结果就是类所属功能的划分不够明确 部分代码冗余 以及为了实现老师作业中的几个继承组合的要求 导致整个系统有些地方并不是十分合理 本系统只是实现了最基本的功能模块 且进货

    2026年3月18日
    2
  • Mybatis动态SQL的实现[通俗易懂]

    Mybatis动态SQL的实现[通俗易懂]场景在实际应用开发过程中,我们往往需要写复杂的SQL语句,需要拼接,而拼接SQL语句又稍微不注意,由于引号,空格等缺失可能都会导致错误。Mybatis提供了动态SQL,也就是可以根据用户提供的参数,动态决定查询语句依赖的查询条件或SQL语句的内容。动态SQL标签if和where标签<!–动态Sql:where/if–><select…

    2022年6月23日
    46
  • Windows部署OpenClaw教程[可运行源码]

    Windows部署OpenClaw教程[可运行源码]

    2026年3月13日
    2
  • 点击图标打不开软件_pycharm安装完没有图标

    点击图标打不开软件_pycharm安装完没有图标情况说明:Pycharm在之前都可以正常打开,但是在我修改了它的安装存储目录后,点击图标就打不开了,而且没有任何反应!条件说明:我下载的pycharm是官方网站下载的。如何解决不可打开问题:步骤1.进入你的安装pycharm的bin文件,找到pycharm.exe.vmoptions和pycharm64.exe.vmoptions步骤2:分别将其打开,将里面的jar…

    2022年8月27日
    5
  • ubuntu14.04下gcc版本查看以及多版本gcc管理与切换整理

    ubuntu14.04下gcc版本查看以及多版本gcc管理与切换整理一:GCC版本查看:版本查看:gcc–versiong++–version位置查看:whichgccwhichg++二:GCC多版本管理与切换:参考这篇博客:https://blog.csdn.net/menghuanbeike/article/details/79008640三:gcc4.8.5安装教程:参考这篇博客:https://ww…

    2022年6月26日
    30

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号