安装

windows 安装git之后貌似自带git flow

初始化

composer init,git init 一样,git flow 也需要初始化,初始化之后会有两个分支 master,develop

//可以重命名各分支
$ git flow init
Initialized empty Git repository in /Users/tobi/acme-website/.git/
//生产分支,如果有用到gogs,gitlab等工具,合并master代码需要审核的情况下,master要用别的名字,例如gitflowmaster
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/] 

创建 feature#

开发一个新功能,创建一个新分支 foo

$ git flow feature start foo

等价于

//切换到develop分支,确保新的 feature 分支是基于最新的 develop 分支创建的。
$ git checkout -b feature/foo develop

舍弃 feature#

取消正在进行中的功能分支,并且会将分支删除

$ git flow feature delete foo

等价于

$ git branch -D feature/foo

完成 feature

foo 功能自测通过后,合并到 develop

$ git flow feature finish foo

等价于

//切换到 develop 分支
$ git checkout develop
//将 feature/foo 分支中的更改合并到 develop 分支。 --no-ff 参数将保留 foo 分支的commit记录。
$ git merge --no-ff feature/foo
//删除已完成的分支。
$ git branch -d feature/foo

创建 release#

当所有新的功能和必要的修复已经被彻底的测试过了,那就开始生成一个新的 release , 在此之后不能添加新功能,只有错误修复、文档生成和其他面向发布的任务应该在该分支中进行。

//1.0.0 是版本号
$ git flow release start 1.0.0

等价于

//从 develop 分支 创建release分支
$ git checkout -b release/1.0.0 develop

舍弃 release#

取消正在进行中的发布分支,并且会将分支删除。

$ git flow release abort 1.0.0

等价于

git branch -D release/1.0.0

完成 release#

添加完发布文档之后,完成 release

$ git flow release finish 1.0.0

等价于

//切换到 develop 分支。
$ git checkout develop
//将 release/1.0.0 分支合并到 develop 分支,--no-ff 选项以保留 feature 分支的 commit 记录
$ git merge --no-ff release/1.0.0
//创建一个名为 1.0.0 的标签
$ git tag -a 1.0.0 -m "Release 1.0.0"
//切换到 master 分支。
$ git checkout master
//将 release/1.0.0 分支合并到 master 分支,--no-ff 选项以保留 feature 分支的 commit 记录
$ git merge --no-ff release/1.0.0
//删除 release/1.0.0 分支。
$ git branch -d release/1.0.0

创建 Hotfixes#

线上发生问题的时候,先回滚到之前的稳定版本,稳定局势
然后创建热修复分支开始改 BUG

$ git flow hotfix start 1.0.1

等价于

//从master分支 创建一个hotfix/1.0.1分支
$ git checkout -b hotfix/1.0.1 foo master

完成 Hotfixes#

紧急修复完毕

$ git flow hotfix finish 1.0.1

等价于

//切换 master 分支
$ git checkout master
//合并热修复分支到master,--no-ff 选项以保留 feature 分支的 commit 记录
$ git merge --no-ff hotfix/ohno
//创建一个名为 1.0.1 的标签
$ git tag 1.0.1
//切换到 develop 分支
$ git checkout develop
//合并热修复分支到 develop ,--no-ff 选项以保留 feature 分支的 commit 记录
$ git merge --no-ff hotfix/1.0.1
//删除热修复分支
$ git branch -d hotfix/1.0.1

phpstorm gogs 实际使用过程#

phpstorm 有集成 gitflow 这个功能

  1. git flow

git-flow[实战系列]

git-flow[实战系列]

  1. 创建开发分支

git-flow[实战系列]

git-flow[实战系列]
本地分支自动切换到 feature/fortest

  1. 结束开发分支

git-flow[实战系列]

  1. 创建发布分支
    git-flow[实战系列]

git-flow[实战系列]

本地分支自动切换到 release/1.0.3

  1. 结束发布分支

git-flow[实战系列]
代码自动合并到 gitflowmaster

  1. 本地切换到 gitflowmaster

git-flow[实战系列]
git push 到 gogs 远程 gitflowmaster 分支

  1. gogs 申请合并

git-flow[实战系列]

git-flow[实战系列]

剩下交给运维

 

git-flow[实战系列]
标签: