安装
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 这个功能
- git flow
- 创建开发分支
本地分支自动切换到 feature/fortest
- 结束开发分支
- 创建发布分支
本地分支自动切换到 release/1.0.3
- 结束发布分支
代码自动合并到 gitflowmaster
- 本地切换到 gitflowmaster
git push 到 gogs 远程 gitflowmaster 分支
- gogs 申请合并
剩下交给运维
相关博文
git-flow[实战系列]