目录
分支及名词
develop分支
通常状况下,普通开发分支(最前沿的分支)都是dev分支,在这上面进行小功能开发、bug修复后合并、大功能合并等等git
master分支
也能够交release分支,是正式版本,不容许在这个分支上进行任何的修改、提交操做,只容许经过工具或者脚本进行合并、tag、release、hotfix等操做github
feature分支
这个通常状况下是模块、大功能开发,为了避免影响到dev分支,每一个开发人员单独拉取一个分支进行开发,而后测试无误后,和dev进行合并web
这个原理在hotfix以及release常常被用到shell
hotfix
一般叫作:打补丁。除了bug以后,在dev上面进行修改,而后在master checkout出来一个hotfix版本号的分支,将dev的commit id进行合并(这里可能出现错误,由于dev已经走很远了),解决错误,发布demo环境测试,没问题以后,合并master,灰度(或者小型蓝绿)发布正式环境bash
release
这个过程和hotfix有点接近,可是是直接在dev上面合并到master,测试无误进行发布版本和tagsmaven
Git flow工具
安装
OS Xsvg
brew install git-flow工具
Linux测试
apt-get install git-flowui
Windows
使用shell小工具
wget -q -O - --no-check-certificate https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | bash
使用
初始化: git flow init
开始新Feature: git flow feature start MYFEATURE
Publish一个Feature(也就是push到远程): git flow feature publish MYFEATURE
获取Publish的Feature: git flow feature pull origin MYFEATURE
完成一个Feature: git flow feature finish MYFEATURE
开始一个Release: git flow release start RELEASE [BASE]
Publish一个Release: git flow release publish RELEASE
发布Release: git flow release finish RELEASE
别忘了git push --tags
开始一个Hotfix: git flow hotfix start VERSION [BASENAME]
发布一个Hotfix: git flow hotfix finish VERSION
maven与gitflow结合
首先引入工具:
<plugin>
<groupId>external.atlassian.jgitflow</groupId>
<artifactId>jgitflow-maven-plugin</artifactId>
<version>1.0-m5.1</version>
</plugin>
hotfix
dev上修复bug以后,提交,而后获取提交的commitID,例如:1f8b31bc477cfff7ef18880a9855f56ae1106625
git checkout master
git pull
## 这里先用git log查看一下以前的hotfix是什么版本号,而后下面写此次hotfix的版本号,好比上一次是0.52.5, 那此次定0.52.6
mvn jgitflow:hotfix-start -DautoVersionSubmodules=true -DreleaseVersion=0.52.6
—hotfix branch
## 这里能够执行屡次cherry-pick,至关于打多个提交的补丁,若是代码有依赖,必须按照提交的顺序来cherry-pick
git cherry-pick 1f8b31bc477cfff7ef18880a9855f56ae1106625
mvn jgitflow:hotfix-finish -DnoHotfixBuild=true -DconsistentProjectVersions=true
git push
git checkout master
git push
git push —tags
如图:
release
git checkout master
git pull
## 这里先用git log查看一下以前的release是什么版本号, 这里会直接改掉pom中相关项目的version
mvn jgitflow:release-start -DautoVersionSubmodules=true -DreleaseVersion=<version>
mvn jgitflow:release-finish -DnoReleaseBuild=true
git push
git checkout master
git push
git push —tags
tags
最后push --tags直接打一个版本标签,这样会记录全部发布过的版本和补丁,方便统计和回滚,以下图:
结束语
博主团队定下的版本号
1.1.111
即:超大版本号.release版本号.hotfix版本号