Git工具调优--GitFlow

GitFlow

Git flow是基于git之上的一种软件开发迭代模型。Git flow是使用git进行源代码管理的一套行为规范。
Git Flow重点解决的是由于源代码在开发过程中的各种冲突导致开发活动混乱的问题,提高开发效率。

GitFlow的分支

Git Flow模型中定义了主分支和辅助分支两类分支。其中主分支用于组织与软件开发、部署相关的活动;辅助分支组织为了解决特定的问题而进行的各种开发活动。

主分支

master分支:存放所有正式发布的版本,可以作为项目历史版本记录分支,不直接提交代码。仅用于保持一个对应线上运行代码的 code base。
develop 分支:作为主开发分支,一般不直接提交代码

辅助分支

我们的开发模式旁边的主要分支机构掌握和发展,使用各种支持分支机构,以帮助团队成员之间的平行发展,便于跟踪的功能,准备生产版本,并协助快速修复现场生产问题。 与主分支不同,这些分支总是有有限的生命时间,因为它们最终将被移除。

feature分支:新功能分支,feature分支都是基于develop创建的,开发完成后会合并到develop分支上。同时存在多个

release分支:基于最新develop分支创建,当新功能足够发布一个新版本(或者接近新版本发布的截止日期),从develop分支创建一个release分支作为新版本的起点,用于测试,所有的测试bug在这个分支改。测试完成后合并到master并打上版本号,同时也合并到develop,更新最新开发分支。(一旦打了release分支之后不要从develop分支上合并新的改动到release分支),同一时间只有1个,生命周期很短,只是为了发布。

hotfix分支:基于master分支创建,对线上版本的bug进行修复,完成后直接合并到master分支和develop分支,如果当前还有新功能release分支,也同步到release分支上。同一时间只有1个,生命周期较短
在这里插入图片描述
在这里插入图片描述

GitFlow插件

maven配置

<build>
	<pluginManagement>
		<plugins>
			<plugin>
				<groupId>external.atlassian.jgitflow</groupId>
     			<artifactId>jgitflow-maven-plugin</artifactId>
     			<version>1.0-m5.1</version>
			</plugin>
		</plugins>
	</pluginManagement>
	
	<plugins>
     	<plugin>
     		<groupId>external.atlassian.jgitflow</groupId>
     		<artifactId>jgitflow-maven-plugin</artifactId>
            <configuration>
                 <localOnly>false</localOnly>
                 <pushFeatures>true</pushFeatures><!--是否在feature start 之后将feature分支推送到远程仓库-->
                 <pushReleases>true</pushReleases><!--是否在release start 之后将feature分支推送到远程仓库-->
                 <pushHotfixes>true</pushHotfixes><!--是否在hotfix start 之后将feature分支推送到远程仓库-->
                 <squash>false</squash>
                 <allowSnapshots>true</allowSnapshots>
                 <goals>clean</goals>
                 <noHotfixBuild>true</noHotfixBuild><!--是否在feature期间build项目-->
                 <noFeatureBuild>true</noFeatureBuild>
                 <noReleaseBuild>true</noReleaseBuild>
                 <!-- see goals wiki page for configuration options -->
                 <flowInitContext>
                     <masterBranchName>master</masterBranchName>
                     <developBranchName>dev</developBranchName>
                     <featureBranchPrefix>feature-</featureBranchPrefix>
                     <releaseBranchPrefix>release-</releaseBranchPrefix>
                     <hotfixBranchPrefix>hotfix-</hotfixBranchPrefix>
                     <versionTagPrefix>v</versionTagPrefix>
                 </flowInitContext>
            </configuration>
        </plugin>
     </plugins>
  </build>

在这里插入图片描述
GitFlow常用命令

mvn jgitflow:feature-start [featureBranchName]: 创建一个基于’develop’的feature分支,并切换到这个分支之下。

mvn jgitflow:feature-finish [featureBranchName]: 完成开发新特性, 合并 MYFEATURE 分支到 ‘develop’, 删除这个新特性分支, 切换回 ‘develop’ 分支。

mvn jgitflow:feature-publish [featureBranchName]:发布新特性分支到远程服务器,也可以使用git的push命令

mvn jgitflow:feature-pull origin [featureBranchName]:取得其它用户发布的新特性分支,并签出远程的变更。也可以使用git的pull命令

mvn jgitflow:feature-track [featureBranchName]:跟踪在origin上的feature分支。

mvn jgitflow:release-start [releaseBranchName]:开始准备release版本,从 ‘develop’ 分支开始创建一个 release 分支。

mvn jgitflow:release-publish [releaseBranchName]:创建 release 分支之后立即发布允许其它用户向这个 release 分支提交内容。

mvn jgitflow:release-track [releaseBranchName]:签出 release 版本的远程变更。

mvn jgitflow:release-finish [releaseBranchName]:归并 release 分支到 ‘master’ 分支,用 release 分支名打 Tag,归并 release 分支到 ‘develop’,移除 release 分支。

mvn jgitflow:hotfix-start [hotfixBranchName]:开始 git flow 紧急修复,从master上建立hotfix分支。

mvn jgitflow:hotfix-finish [hotfixBranchName]:结束 git flow 紧急修复,代码归并回 develop 和 master 分支。相应地,master 分支打上修正版本的 TAG。

在这里插入图片描述
jgitflow-maven-plugin管理流程
在这里插入图片描述

posted @ 2020-08-25 14:53  奋斗的小宋  阅读(51)  评论(0)    收藏  举报