git flow 介绍
- GitFlow是一套基于git的工作流程,这个工作流程围绕着项目发布定义了一个严格的如何建立分支的模型。
- GitFlow规定了如何建立、合并分支,如何发布,如何维护历史版本等工作流程。简单说就是每一个功能特性的开发是在分支上开发,而不是在主干开发,分支开发完毕后再合并到主干上。
GitFlow只是对git命令的封装,在此简单对比一下,git flow命令对应的git命令。
初始化项目
方式一 git命令
git init
方式二 git flow命令
git flow init
# 生成如下分支
Master
develop
feature 新功能分支
bugfix bug修复分支
Release 发布分支
Hotfix 生产修复分支
feature分支
方法一 git命令
$ git checkout -b myfeature develop
Switched to a new branch "myfeature"
$ git checkout develop
Switched to branch 'develop'
$ git merge --no-ff myfeature
Updating ea1b82a..05e9557 # merge 回去feature中commit中的记录
(Summary of changes)
$ git branch -d myfeature
Deleted branch myfeature (was 05e9557).
$ git push origin develop
方法二 通过git flow命令
git flow feature start email
# add new file or change something
Git commit -m "this test"
git flow feature finish email
release分支
方法一 git命令
# 1、创建release分支,并测试
$ git checkout -b release-1.2 develop
Switched to a new branch "release-1.2"
$ ./bump-version.sh 1.2
Files modified successfully, version bumped to 1.2.
$ git commit -a -m "Bumped version number to 1.2"
[release-1.2 74d9424] Bumped version number to 1.2
1 files changed, 1 insertions(+), 1 deletions(-)
# 2、切换回master分支,将release合并到master
$ git checkout master
Switched to branch 'master'
$ git merge --no-ff release-1.2
Merge made by recursive.
(Summary of changes)
$ git tag -a 1.2
# 3、同步到develop
$ git checkout develop
Switched to branch 'develop'
$ git merge --no-ff release-1.2
Merge made by recursive.
(Summary of changes)
方法二 git flow 方式
git flow release start V0.1.0
#部署到测试环境 进行测试。 有问题提commit修复 但不要merge回develop分支。 Finish 后自动merge到develop 和master分支。
git flow release finish V0.1.0
git push origin master
git push origin [tagname]
#要把tags也推送上去
git flow release start V0.1.0即会创建release/V0.1.0分支
hot fix分支的使用
方法一 git命令
$ git checkout -b hotfix-1.2.1 master
Switched to a new branch "hotfix-1.2.1"
$ ./bump-version.sh 1.2.1
Files modified successfully, version bumped to 1.2.1.
$ git commit -a -m "Bumped version number to 1.2.1"
[hotfix-1.2.1 41e61bb] Bumped version number to 1.2.1
1 files changed, 1 insertions(+), 1 deletions(-)
方式二 git flow方式
Git flow hotfix 流程
git flow hotfix start V0.1.1
// 行为即为 A new branch 'hotfix/V0.1.1' was created, based on 'master'
git commit -m "fix something"
git flow hotfix finish V0.1.1
会自动打tag 并叫你输入tag描述