热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

后端必备的Git分支开发规范指南转

原文链接作者:稻草叔叔http:juejin.impost5b4328bbf265da0fa21a6820点击上方“后端技术精选”,选择“置顶公众号”技术文章第一时间送达!作者:稻

原文链接 作者:稻草叔叔 http://juejin.im/post/5b4328bbf265da0fa21a6820

点击上方 “后端技术精选”,选择 “置顶公众号”

技术文章第一时间送达!

作者:稻草叔叔

juejin.im/post/5b4328bbf265da0fa21a6820

Git 是目前最流行的源代码管理工具。为规范开发,保持代码提交记录以及 git 分支结构清晰,方便后续维护,现规范 git 的相关操作。

技术图片

分支管理

分支命名

master 分支

  • master 为主分支,也是用于部署生产环境的分支,确保 master 分支稳定性

  • master 分支一般由 develop 以及 hotfix 分支合并,任何时间都不能直接修改代码

develop 分支

  • develop 为开发分支,始终保持最新完成以及 bug 修复后的代码

  • 一般开发的新功能时,feature 分支都是基于 develop 分支下创建的

feature 分支

  • 开发新功能时,以 develop 为基础创建 feature 分支

  • 分支命名: feature/ 开头的为特性分支, 命名规则: feature/user_module、 feature/cart_module

release 分支

  • release 为预上线分支,发布提测阶段,会 release 分支代码为基准提测

当有一组 feature 开发完成,首先会合并到 develop 分支,进入提测时,会创建 release 分支。
如果测试过程中若存在 bug 需要修复,则直接由开发者在 release 分支修复并提交。
当测试完成之后,合并 release 分支到 master 和 develop 分支,此时 master 为最新代码,用作上线。

hotfix 分支

  • 分支命名: hotfix/ 开头的为修复分支,它的命名规则与 feature 分支类似

  • 线上出现紧急问题时,需要及时修复,以 master 分支为基线,创建 hotfix 分支,修复完成后,需要合并到 master 分支和 develop 分支

常见任务

增加新功能

(dev)$:?git?checkout?-b?feature/xxx????????????#?从dev建立特性分支
(feature/xxx)$:?blabla?????????????????????????#?开发
(feature/xxx)$:?git?add?xxx
(feature/xxx)$:?git?commit?-m?'commit?comment'
(dev)$:?git?merge?feature/xxx?--no-ff??????????#?把特性分支合并到dev

修复紧急 bug

(master)$:?git?checkout?-b?hotfix/xxx?????????#?从master建立hotfix分支
(hotfix/xxx)$:?blabla?????????????????????????#?开发
(hotfix/xxx)$:?git?add?xxx
(hotfix/xxx)$:?git?commit?-m?'commit?comment'
(master)$:?git?merge?hotfix/xxx?--no-ff???????#?把hotfix分支合并到master,并上线到生产环境
(dev)$:?git?merge?hotfix/xxx?--no-ff??????????#?把hotfix分支合并到dev,同步代码

测试环境代码

(release)$:?git?merge?dev?--no-ff?????????????#?把dev分支合并到release,然后在测试环境拉取并测试

生产环境上线

(master)$:?git?merge?release?--no-ff??????????#?把release测试好的代码合并到master,运维人员操作
(master)$:?git?tag?-a?v0.1?-m?'部署包版本名'??#给版本命名,打Tag

技术图片

日志规范

在一个团队协作的项目中,开发人员需要经常提交一些代码去修复 bug 或者实现新的 feature。而项目中的文件和实现什么功能、解决什么问题都会渐渐淡忘,最后需要浪费时间去阅读代码。但是好的日志规范 commit messages 编写有帮助到我们,它也反映了一个开发人员是否是良好的协作者。

编写良好的 Commit messages 可以达到 3 个重要的目的:

  • 加快 review 的流程

  • 帮助我们编写良好的版本发布日志

  • 让之后的维护者了解代码里出现特定变化和 feature 被添加的原因

目前,社区有多种 Commit message 的写法规范。来自 Angular 规范是目前使用最广的写法,比较合理和系统化。如下图:

技术图片

Commit messages 的基本语法

当前业界应用的比较广泛的是 Angular Git Commit Guidelines

https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#-git-commit-guidelines

具体格式为:

:?



  • type: 本次 commit 的类型,诸如 bugfix docs style 等

  • scope: 本次 commit 波及的范围

  • subject: 简明扼要的阐述下本次 commit 的主旨,在原文中特意强调了几点 1. 使用祈使句,是不是很熟悉又陌生的一个词,来传送门在此 祈使句 2. 首字母不要大写 3. 结尾无需添加标点

  • body: 同样使用祈使句,在主体内容中我们需要把本次 commit 详细的描述一下,比如此次变更的动机,如需换行,则使用 |

  • footer: 描述下与之关联的 issue 或 break change,详见案例

Type 的类别说明:

  • feat: 添加新特性

  • fix: 修复 bug

  • docs: 仅仅修改了文档

  • style: 仅仅修改了空格、格式缩进、都好等等,不改变代码逻辑

  • refactor: 代码重构,没有加新功能或者修复 bug

  • perf: 增加代码进行性能测试

  • test: 增加测试用例

  • chore: 改变构建流程、或者增加依赖库、工具等

Commit messages 格式要求

#?标题行:50个字符以内,描述主要变更内容
#
#?主体内容:更详细的说明文本,建议72个字符以内。?需要描述的信息包括:
#
#?*?为什么这个变更是必须的??它可能是用来修复一个bug,增加一个feature,提升性能、可靠性、稳定性等等
#?*?他如何解决这个问题??具体描述解决问题的步骤
#?*?是否存在副作用、风险??
#
#?如果需要的化可以添加一个链接到issue地址或者其它文档

参考链接

http://www.ruanyifeng.com/blog/2012/07/git.html
http://ivweb.io/topic/58abda9d2117ae2f4995b4a8
https://segmentfault.com/a/1190000009048911

推荐阅读 (点击即可跳转阅读)

1.?SpringBoot 内容聚合

2.?面试题内容聚合

3.?设计模式内容聚合

4.?Mybatis 内容聚合

5.?多线程内容聚合

技术图片

后端必备的 Git 分支开发规范指南 转


推荐阅读
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • 本文内容为asp.net微信公众平台开发的目录汇总,包括数据库设计、多层架构框架搭建和入口实现、微信消息封装及反射赋值、关注事件、用户记录、回复文本消息、图文消息、服务搭建(接入)、自定义菜单等。同时提供了示例代码和相关的后台管理功能。内容涵盖了多个方面,适合综合运用。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文介绍了指针的概念以及在函数调用时使用指针作为参数的情况。指针存放的是变量的地址,通过指针可以修改指针所指的变量的值。然而,如果想要修改指针的指向,就需要使用指针的引用。文章还通过一个简单的示例代码解释了指针的引用的使用方法,并思考了在修改指针的指向后,取指针的输出结果。 ... [详细]
  • 在project.properties添加#Projecttarget.targetandroid-19android.library.reference.1..Sliding ... [详细]
author-avatar
丶Le丨囧囧_832
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有