一、简介
Git Flow定义了一个项目发布的分支模型,为管理具有预定发布周期的大型项目提供了一个健壮的框架。
二、流程解析
1. master分支
存放所有正式发布的版本,可以作为项目历史版本记录分支,不直接提交代码。仅用于保持一个对应线上运行代码的 code base。
2. develop分支
主开发分支,一般不直接提交代码
3. feature分支
新功能分支,feature分支都是基于develop创建的,开发完成后会合并到develop分支上。同时存在多个
4. release分支
基于最新develop分支创建,当新功能足够发布一个新版本(或者接近新版本发布的截止日期),从develop分支创建一个release分支作为新版本的起点,用于测试,所有的测试bug在这个分支改。测试完成后合并到master并打上版本号,同时也合并到develop,更新最新开发分支。(一旦打了release分支之后不要从develop分支上合并新的改动到release分支),同一时间只有1个,生命周期很短,只是为了发布。
5. hotfix分支
基于master分支创建,对线上版本的bug进行修复,完成后直接合并到master分支和develop分支,如果当前还有新功能release分支,也同步到release分支上。同一时间只有1个,生命周期较短
三、Git Flow工具包命令
git flow init:初始化一个现有的 git 库,将会设置一些初始的参数,如分支前缀名等,建议用默认值。
git flow feature start [featureBranchName]: 创建一个基于'develop'的feature分支,并切换到这个分支之下。
git flow feature finish [featureBranchName]: 完成开发新特性, 合并 MYFEATURE 分支到 'develop', 删除这个新特性分支, 切换回 'develop' 分支。
git flow feature publish [featureBranchName]:发布新特性分支到远程服务器,也可以使用git的push命令
git flow feature pull origin [featureBranchName]:取得其它用户发布的新特性分支,并签出远程的变更。也可以使用git的pull命令
git flow feature track [featureBranchName]:跟踪在origin上的feature分支。
git flow release start [releaseBranchName]:开始准备release版本,从 'develop' 分支开始创建一个 release 分支。
git flow release publish [releaseBranchName]:创建 release 分支之后立即发布允许其它用户向这个 release 分支提交内容。
git flow release track [releaseBranchName]:签出 release 版本的远程变更。
git flow release finish [releaseBranchName]:归并 release 分支到 'master' 分支,用 release 分支名打 Tag,归并 release 分支到 'develop',移除 release 分支。
git flow hotfix start [hotfixBranchName]:开始 git flow 紧急修复,从master上建立hotfix分支。
git flow hotfix finish [hotfixBranchName]:结束 git flow 紧急修复,代码归并回 develop 和 master 分支。相应地,master 分支打上修正版本的 TAG。