master分支存储了正式发布的历史,不能直接工作在这个 master 分支上。
develop分支作为功能的集成分支;你进行任何新的开发的基础分支。
这两个分支被称作为 长期分支。它们会存活在项目的整个生命周期中。而其他的分支,例如针对功能的分支,针对发行的分支,仅仅只是临时存在的。它们是根据需要来创建的,当它们完成了自己的任务之后就会被删除掉。
每一个新功能位于一个自己的分支,而且是从develop分支作为父分支。
当新功能完成时,合并回develop分支。
新功能提交应该从不直接与master分支交互。
一旦develop分支上有了做一次发布的足够功能,就从develop分支上fork一个发布分支。新建的分支用于开始发布循环,所以从这个时间点开始之后新的功能不能再加到这个分支上。这个分支只应该做Bug修复,文档生成和其它面向发布的任务。
一旦对外发布的工作都完成了,发布分支合并到master分支并分配一个版本号打好Tag。另外,这些从新建发布分支以来做的修改要合并回develop分支。
关于维护分支或说是热修复(hotfix)分支:
用于快速给产品发布版本打补丁。
唯一可以直接从master分支fork出来的分支。
修复完成后修改应该马上合并回master分支和develop分支,master分支应该用新的版本号打好Tag。
Github [README]: https://github.com/nvie/gitflow
A collection of Git extensions to provide high-level repository operations for Vincent Driessen’s branching model
git-flow就是基于 Vincent Driessen的分支模型实现的。
Vincent Driessen的分支模型:A successful Git branching model
国内关于此篇文章的翻译:介绍一个成功的 Git 分支模型
git flow init
使用 git-flow,从初始化一个现有的 git 库内开始;建议使用默认的命名;
git flow feature start FEATUR_NAME
执行的操作:创建了一个基于’develop’的特性分支,并切换到这个分支之下
git flow feature finish FEATURE_NAME
执行的操作:合并FEATURE分支到develop分支;删除这个新特性分支;切换回develop分支
git flow feature publish [FEATURE_NAME]
执行的操作:发布新特性分支到远程服务器,其它用户也可以使用这分支。
git flow feature track FEATURE_NAME
执行的操作:取得其它用户发布的新特性分支,并签出远程的变更
git flow release start [RELEASE_NAME]
执行的操作:从 ‘develop’ 分支开始创建一个 release 分支
git flow release publish RELEASE_NAME
类似于发布新特性分支
git flow release track [RELEASE_NAME]
git flow release finish RELEASE_NAME
执行的操作:
git flow hotfix start VERSION [BASENAME]
VERSION 参数标记着修正版本。你可以从 [BASENAME]开始,[BASENAME]为finish release时填写的版本号
git flow hotfix finish VERSION
当完成紧急修复分支,代码归并回 develop 和 master 分支。相应地,master 分支打上修正版本的 TAG。
关于安装:https://github.com/nvie/gitflow/wiki/Installation
brew install git-flow
yum install gitflow
window的安装会麻烦一些。
git flow:安装和使用
以mac下的webstorm为例
按照上图中的步骤可以在webstorm中安装git-flow的插件。
安装完重启webstorm后可以看到右下角多了Gitflow的选项。
安装这个插件后就不需要再输入git flow的命令了,不过git-flow总共也就那么几条命令,先熟练命令再用这个插件也许更好一点吧。
参考链接:
Git工作流指南:Gitflow工作流
git-flow备忘清单