美文网首页
git-flow 使用方法

git-flow 使用方法

作者: 沙漠中的猴 | 来源:发表于2018-08-01 18:31 被阅读0次

简介

git-flow是一个git关于git版本流程控制的工具,使用方法简单。

安装

MacOS

通过home-brew来安装

brew install git-flow

Linux Ubuntu

sudo apt-get install git-flow

查看版本

git-flow version

工作原理

参考:https://www.cnblogs.com/lcngu/p/5770288.html

分支讲解

Master

master分支一定是唯一的,且稳定的。
一般都是在Realease分支和Hotfix分支修改了一些Bug之后,确保已经稳定了,才会合并到Master分支。

Develop

特性分支的开发,依赖于Develop分支,新建特性和合并特性分支,都是基于Develop分支。最好不要在Develop分支直接开发,而是创建特性分支来开发。
同样的,Develop分支也是唯一的。

Release

Release分支是属于发布版本的分支。在同一个时间只有一个release分支存在。
在release分支上只能做一些bug修改,少量的代码修复。尽量避免写大量的代码。
创建release分支:

git flow release start v.1.0

修改完bug之后,再结束该release分支

git flow release finish v.1.0

这里面涉及到的内容:

  • release分支会将内容merge到master分支
  • 同时会打上tag
  • release分支会将内容merge到develop分支
  • release分支会被删除。

Feature

Feature分支依赖于Develop分支,可以同时存在多个。
在该分支里面写代码业务逻辑,完成之后合并到Develop分支。
创建一个叫做test的特性分支

git flow feature start test

完成一个叫做test的特性分支:

git flow feature finish test

将本地的特性分支推送到远端仓库:

git flow feature publish test

这里需要注意,你在本地创建的特性分支,在finish之后,就消失了。因为合并到了develop分支里面。
如果你publish了这个特性分支,那么他将作为一个独立的分支存在于远端仓库。可以大家同时协作开发。

Hotfix

当Master分支出现bug的时候,就需要创建一个Hotfix分支了。Hotfix分支基于Master分支,修改完成之后,同样会合并到Master分支。
创建Hotfix分支:

git flow hotfix start v.1.0

完成Hotfix分支:

git flow hotfix finish v.1.0

这句命令会将hotfix分支merge到master分支和release分支,并删除该hotfix分支。

值得注意的是,如果bug修复时,正存在着release分支,那么hotfix分支会merge到release分支,而不是develop分支。

使用方法

进入项目目录

我拿我的sharex项目目录来举例

cd sharex

可以看到,该项目是没有tag,且只有一个branch的。

初始化git-flow结构

执行git-flow init,之后输入回车就可以,你会看到如下内容:

15:07:48 @~/code/sharex$ git-flow init

Which branch should be used for bringing forth production releases?
   - master
Branch name for production releases: [master]              //生产环境的分支名称
Branch name for "next release" development: [develop]    //开发环境的分支名称

How to name your supporting branch prefixes?
Feature branches? [feature/]                //特性分支的分支名称
Release branches? [release/]               //发布版本的分支名称
Hotfix branches? [hotfix/]                     //Bug修复的分支名称
Support branches? [support/]             
Version tag prefix? []

之后输入git branch查看当前所属的分支

15:12:09 @~/code/sharex$ git branch
* develop
  master

可以看到当前所属的分支为develop。这个是 git-flow负责创建的。

创建特性分支

如果你想填写一些功能,你可以选择创建一个新的特性分支,完成之后再合并到develop分支中去。

在这里我创建了一个名字为test的特性分支。并出现了以下信息

15:23:34 @~/code/sharex$ git flow feature start test
Switched to a new branch 'feature/test'

Summary of actions:
- A new branch 'feature/test' was created, based on 'develop'
- You are now on branch 'feature/test'

Now, start committing on your feature. When done, use:

     git flow feature finish test

我们再查看一下,当前所属的分支:

15:23:52 @~/code/sharex$ git branch
  develop
* feature/test
  master

发现当前处于新建的特性分支中。

关闭特性分支

当你完成了特性分支的功能开发,你要先执行git addgit commit -m ""之后再关闭特性分支。

你可以执行git flow feature finish test,会出现如下内容:

15:32:18 @~/code/sharex$ git flow feature finish test
Switched to branch 'develop'
Updating 8247fbb..973b54e
Fast-forward
 README.md | 1 +
 1 file changed, 1 insertion(+)
Deleted branch feature/test (was 973b54e).

Summary of actions:
- The feature branch 'feature/test' was merged into 'develop'
- Feature branch 'feature/test' has been removed
- You are now on branch 'develop'

查看当前所属的分支git branch

15:32:47 @~/code/sharex$ git branch
* develop
  master

发现我们回到了本地的develop分支,而之前创建的feature/test分支已经消失了。

将特性分支推送到远程仓库

在项目中,大家有可能同时开发某一个特性分支。这时就需要将创建的特性分支推送到远程仓库了。
使用git flow feature publish test

创建release分支

用来管理发布的版本,做些小的修改

15:54:17 @~/code/sharex$ git flow release start v1.0
Switched to a new branch 'release/v1.0'

Summary of actions:
- A new branch 'release/v1.0' was created, based on 'develop'
- You are now on branch 'release/v1.0'

Follow-up actions:
- Bump the version number now!
- Start committing last-minute fixes in preparing your release
- When done, run:

     git flow release finish 'v1.0'

查看当前所属分支:

17:26:28 @~/code/sharex$ git branch
  develop
  master
* release/v1.0

结束当前release分支

当你修改完bug之后,你需要关闭当前release分支。由此可见,release的生命周期很短暂。

17:28:58 @~/code/sharex$ git flow release finish v1.0
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
Merge made by the 'recursive' strategy.
 README.md | 2 ++
 1 file changed, 2 insertions(+)
Switched to branch 'develop'
Merge made by the 'recursive' strategy.
 README.md | 1 +
 1 file changed, 1 insertion(+)
Deleted branch release/v1.0 (was 240dfef).

Summary of actions:
- Latest objects have been fetched from 'origin'
- Release branch has been merged into 'master'
- The release was tagged 'v1.0'
- Release branch has been back-merged into 'develop'
- Release branch 'release/v1.0' has been deleted

这里会让你填写一些相关的合并分支的信息。之后会删除该release分支。
查看一下当前所属的分支:

17:57:48 @~/code/sharex$ git branch
* develop
  master

我们可以到master分支和develop分支,通过git log来查看log相关的信息。

总结

命令总结

  • 初始化git flow控制流:
git flow init
  • 创建特性分支:
git flow feature start test       //test改成你要创建的特性名称
  • 完成特性分支:
git flow feature finish test
  • 创建release分支:
git flow release start v1.0
  • 完成release 分支:
 git flow release finish v1.0
  • 创建Hotfix分支:
git flow hotfix start v.1.0
  • 完成Hotfix分支:
git flow hotfix finish v.1.0

参考:
https://www.cnblogs.com/lcngu/p/5770288.html
https://blog.csdn.net/lihao21/article/details/47789419

相关文章

  • git-flow 使用方法

    简介 git-flow是一个git关于git版本流程控制的工具,使用方法简单。 安装 MacOS 通过home-b...

  • git-flow

    git-flow git-flow 应该是目前流传最广的 Git 分支管理实践。git-flow 围绕的核心概念是...

  • Git 分支管理 git-flow

    git-flow git-flow 应该是目前流传最广的 Git 分支管理实践。git-flow 围绕的核心概念是...

  • git分支规范

    分支管理参考git-flow(git-flow介绍)的工作流程,但不使用git-flow。所有的分支的操作都需要手...

  • 一周学习精选(2018-10-27)

    使用 git-flow 管理分支 Using git-flow to automate your git bran...

  • Git 管理工具 Tower 的使用

    创建 git flow 点击 Git-Flow -> Enable Git-Flow 按钮 点击 configur...

  • Git流程工具 git-flow 使用心得

    git-flow这个工具非常工具,官网地址 一.下载git-flow mac下使用 brew install gi...

  • git-flow 初探

    安装git-flow 请自行搜索 -$ git flow init git-flow 模式会预设两个主分支在仓库中...

  • git-flow使用指南

    git-flow使用指南 1.简介 git-flow是基于Git Flow工作流模型的工具,了解Git Flow ...

  • 2021-10-14

    什么是 Git-flow? 简单的说,Git-flow 就是利用 Git 分支能力的开发策略之一。 可以采用 Gi...

网友评论

      本文标题:git-flow 使用方法

      本文链接:https://www.haomeiwen.com/subject/ujqrvftx.html