Java开发中常用的几种Git工作流( 二 )


临时分支:
当在生成环境发现新的Bug时候,如果需要紧急修复,会创建一个hotfix分支,充分测试后合入master和develop分支,随后删除该分支 。
各分支如何配合工作?
(1)master/develop分支
原则上master分支上所有的commit 都应该打上Tag,因为一般情况下master不存在 直接commit;
devlop分支 是基于 master分支创建的,与 master 分支一样都是主分支,不会被删除 。
develop 从 master 拉出来之后会独立发展,不会与 master 直接产生联系 。
主分支工作流程
(2)feature 分支
通常一个独立的特性都会基于 develop 拉出一个 feature 分支,feature 分支之间没有任何交互,互不影响 。feature 分支一旦开发完成后会立马合入 develop 分支(采用 merge request 或者 pull request),feature 分支的生命周期也随之结束 。

Java开发中常用的几种Git工作流

文章插图
feature 分支工作流程
(3)release 分支
通常一个迭代上线会拉一个release 分支,开发人员开发完毕所有的代码都已合入 develop 分支,这时候会基于 develop 分支拉出一个 release 分支,测试人员基于该分支进行测试 。
Java开发中常用的几种Git工作流

文章插图
release 分支工作流程
(4)hotfix 分支
hotfix分支基于master分支创建,开发完后需要同时回合到master和develop分支,同时在master上打一个tag 。
Java开发中常用的几种Git工作流

文章插图
hotfix 分支工作流程
分支命名规范
团队内部可以约定每个分支的命名样式,这里举个例子,大家可以参考:
Forking 工作流
是以 Github 为代表的一种代码协作方式,开发者通过克隆(fork)源仓库进行编写代码,一旦完成会发起,源仓库作者可以选择是否接受该 PR 。
下面通过 Github 详细讲解 Forking 工作流模式 。
随便找一个Github 开源项目,
https://github.com/smileArchitect/JAVAMap
右上角有三个按钮:Watch,Star,Fork
是关注的意思,一旦你点击了之后该项目有任何改动都会第一时间通知到你;
类似于点赞的意思,多给开源项目点个赞,鼓励一下作者;
本意是分叉,实际上是克隆的意思,点了之后会将该项目拷贝一份到自己的 github 远程仓库中 。
fork 示例
在本地执行 命令将代码克隆到本地,一顿修改操作后提交代码并 到个人远程仓库中,然后在界面上发起,项目的原作者会看到你提交的,根据提交的质量作者可以选择接受或拒绝 。
Java开发中常用的几种Git工作流

文章插图
Github 工作流程
Forking 工作流非常适合于类似 Github 这种开源项目,任何一个开发者都可以通过 向项目中贡献代码 。
总结
文章介绍了四种工作流,分别是,,,。
在 SVN 时代比较常见,切到 Git 后不建议再使用这种方式了 。
通常是一个主干 master 分支 + 多个 feature 分支,一般适用于小团队开发 。
是在功能分支工作流的基础上进一步演进而来,采用 master + develop 双主分支再加上多个临时功能分支,这是一个非常成熟的代码协作管理的方式,推荐大家使用 。
主要采取 fork + pull request 的模式进行协作,主要用于开源项目 。
最后:这四种工作流方式各有特色,开发团队可根据自身的特点去选择,不必严格拘泥于某一种方式,适合自己的才是最优的 。大家学会了吗?

【Java开发中常用的几种Git工作流】


推荐阅读