美文网首页Android开发
前端开发-Gitflow

前端开发-Gitflow

作者: jiantaocd | 来源:发表于2018-11-16 21:56 被阅读2次

主要分支

master

master分支存在于整个项目周期,主分支。master分支不能有任何代码的提交,开发人员只能从其他分支提交PR(pull request),由项目负责人合并。

Q: 为什么没有develop分支

A: develop分支的职责已经分配到feature和hotfix中,将临时分支的修改合并到develop后再合并到master好像没有意义。为了避免引起困惑,所以移除develop分支。

临时分支

feature

feature分支用于开发新的功能,不同业务应该建立不同的feature分支。

  • master分支创建

  • 开发测试完成合并至release后删除

release

release分支用于预发布和回归测试。

  • master分支创建

  • 发布完成后打上tag合并至master后删除

hotfix

hotfix分支用于修复线上问题。

  • master分支创建

  • 发布完成打上tag合并至master后删除

示例

新需求开发

假设项目有一个名为me1124的需求,我们从master创建一个新的分支

git branch feature/me1124

然后经历了N次提交,测试后准备上线。

假设此时我们的版本是1.0.0

使用merge

// 从master分支创建release/1.0.0分支
git checkout -b release/1.0.0
git merge feature/me1124
git branch -d feature/huafang

使用rebase

// 从master分支创建release/1.0.0分支
git checkout -b release/1.0.0
git checkout feature/me1124
git rebase release/1.0.0
git checkout release/1.0.0
git merge feature/me1124
git branch -d feature/me1124

release/v1.0.0分支进行最终测试后,我们打上tag并变基到master,并删除release分支。此处tag的应该和版本号保持一致。

使用merge

git checkout master
git merge release/v1.0.0
git tag v1.0.0
git branch -d release/v1.0.0

使用rebase

git rebase master
git tag v1.0.0
git checkout master
git merge release/v1.0.0
git branch -d release/v1.0.0

Q: 为什么不直接从feature分支合并到master呢

A:

  1. 存在多个业务需求并行开发,并在同一个版本发布的情况。

  2. 开发过程中有线上bug修复。

  3. 1,2情况需要进行回归测试。

  4. 使用release分支在语义上更加符合开发流程。

线上bug修复

线上bug修复的逻辑和新需求开发基本一致,个别地方有所区别。

假设我们需要修复一个名为missing-phone的bug,

git checkout master
git branch hotfix/missing-phone

然后经历了N次修复,测试完毕后准备上线。

与feature分支不同的是,hotfix分支的代码基于稳定的功能,测试完毕后不需要通过release分支即可发布上线。hotfix分支同样需要打上tag.

git rebase master
git tag v1.0.1
git checkout master
git merge hotfix/missing-phone
git branch -d hotfix/missing-phone

Merge vs Rebase

并不强制使用merge或者rebase。但是为了避免冲突,同一个项目尽量使用同一个方式。

参考文档:

Merge

优势在于操作简单,不易出错,而且是很多工具的默认合并方式。

缺点在于协同开发时,2个分支如果都有修改,合并后图形会出现岔路,看起来有些混乱(也有观点认为还原了历史)。

Rebase

优势在于分支的图形线性,清晰。

缺点在于:

  • 协同开发时,拉取远程代码要使用变基拉取(git pull -- rebase)。不然在分支变基时要重新解决冲突(简单理解就是之前的提交记录当做patch重新应用,那么之前有冲突也会复现)。

End

以上内容来源于杨骐彰同学的分享,此工作流优点在于维护的分支较少,思路清晰,项目就master和正在开发的分支,剩下的就只有tag标签了。

相关文章

  • 前端开发-Gitflow

    主要分支 master master分支存在于整个项目周期,主分支。master分支不能有任何代码的提交,开发人员...

  • Gitflow开发流程

    Git flow 请大家在协作开发过程中,尽量使用这种流程,对自己和团队都有利。 Git flow 定义 1、gi...

  • GitFlow实战

    什么是GitFlow GitFlow是Git的一种分支模式。因为能够非常好的适应团队开发,正在变得越来越流行。这个...

  • gitflow 与 fastlane 以及自动化的思考

    gitflow是团队协作中常用的工作流指南. 我们在工作中按照gitflow的工作流来进行分支管理的话, 整个开发...

  • GitFlow工作流程

    什么是Gitflow Gitflow是基于Git的强大分支能力所构建的一套软件开发工作流,最早由Vincent D...

  • GitFlow

    GitFlow定义了一个围绕项目发布的严格的分支模型GitFlow仍然用中央仓库作为所有开发者的交互中心 mast...

  • 2018-11-29-前端git-flow开发

    项目开发使用gitflow流程 一、安装扩展:http://danielkummer.github.io/git-...

  • GitFlow开发管理流程

    最近公司代码仓库使用的gerrit, git flow 开发流程有点忘了,做下记录 1. 仓库建立, 一般采用gi...

  • gitFlow工作流程和分支命名规范

    gitFlow工作流程使用 一张图看懂gitFlow流程 gitFlow流程常用分支 master develop...

  • Vue.js 开发日常

    开发工具 VSCode配置详见:VSCode配置篇 版本控制 git sourcetree(gitflow工作流强...

网友评论

    本文标题:前端开发-Gitflow

    本文链接:https://www.haomeiwen.com/subject/fluvfqtx.html