原文链接 作者:稻草叔叔 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>: <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>

  • 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 分支开发规范指南 转的更多相关文章

  1. Git 分支开发规范

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

  2. 您必须知道的 Git 分支开发规范

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

  3. Git常用命令和Git团队使用规范指南

    转自:https://wsgzao.github.io/post/git/ 前言 在2005年的某一天,Linux之父Linus Torvalds 发布了他的又一个里程碑作品——Git.它的出现改变了 ...

  4. git分支开发的好处

    有不少开发者们不习惯使用Git分支开发.原因有如下几个方面?(1)不熟悉不习惯;(2)觉得太麻烦;今天我想说的是使用git分支开发绝对是一个高效版本控制的做法. 当你遇到测试人员给你提的bug,你只需 ...

  5. git 分支命名规范

    为规范开发,保持代码提交记录以及 git 分支结构清晰,方便后续维护,现规范 git 的相关操作. 主要规范两点: git 分支命名规范 git 提交记录规范 1. git 分支命名规范 git 分支 ...

  6. 团队项目的Git分支管理规范

    原文地址: http://blog.jboost.cn/2019/06/17/git-branch.html 许多公司的开发团队都采用Git来做代码版本控制.如何有效地协同开发人员之间,以及开发.测试 ...

  7. 使用Git分支开发新特性或修复Bug与使用Git分支开发新特性或修复Bug

    使用Git分支开发新特性或修复Bug 通过分支,可以在不影响原有代码的前提下改变代码,主要用于开发新功能新特性.下 一代产品 为已经发布的正式版修复bug 团队开发时为每个人建立一个分支,从而避免相互 ...

  8. IDEA下Git分支开发

    IDEA下Git分支开发使用 1.新建本地开发分支 VCS-->git-->branches-->New Branch,输入分支名字,如branch_test,点击OK后本地开发分支 ...

  9. Git分支管理规范

    关于Git的一些分支管理规范... 一.分支与角色说明 Git 分支类型 master 分支(主分支) 稳定版本 develop 分支(开发分支) 最新版本 release 分支(发布分支) 发布新版 ...

随机推荐

  1. springboot热启动中那些不为人知的东东

    在springboot热启动中,大家都知道在pom文件中配置devtools,但是当这个服务特别大,或者引入的包特别多的时候,重启一下就特别慢,如果开发的PC的内存和cpu如果不给里的h话,系统就卡主 ...

  2. IT从业者不可不知的三条定律

    信息技术行业,也就是我们所说的IT行业,有着传统行业所未有的发展速度和模式,当然也有着它独特的发展定律.如果你是从事相关行业,下面讲到的三条定律,不可不知. 摩尔定律 比尔·盖茨曾跟通用公司老板说:如 ...

  3. 动态SQL屏幕条件选择(里面还有赋值的新语法)

    有时候屏幕条件中使用PARAMETERS时候,如果你为空的话,会查不出数据,但是可能你的想法是不想限制而已,但是系统默认理解为了空值,这个时候,如果取判断一下条件是不是空,在SQL里决定写不写的话,会 ...

  4. c#图片相关常用的方法及处理

    总结一下图片相关,常用的几个操作   一 创建Image对象 1. 手头上有一些图片文件,希望转换成 c# 中 Image对象,然后加以使用. public static System.Drawing ...

  5. .net 定时任务调度

    前段时间开发个项目需要自定义时间定时发送邮件,此处使用了Quartz 定时任务,在此记录下: /// <summary> /// 创建定时任务 /// </summary> / ...

  6. Python里三个最高逼格的调试神器

    调试是开发过程中不可避免的一个环节,在Python中我们使用print.logging.assert等方法进行调试既简单又实用,但毕竟有其局限性.今天这篇文章为大家带来三个工具,其中有Python的内 ...

  7. HTML常用标签二

    图像标签和路径 目录文件夹:普通的文件夹,里面存放了我们做页面需要的相关素材,比如html文件,图片等 根目录:打开目录文件夹的第一层就是根目录 路径 相对路径 以引用文件所在位置为参考基础,而建立出 ...

  8. 创建Npm脚手架

    1工具 l  Npm ( https://nodejs.org/en/ ) l  Yeoman (npm install -g yo) l  generator-generator (npm inst ...

  9. SQLi-LABS Page-3 (Stacked injections) Less-38-Less-45

    Less-38 堆叠注入原理简介堆叠注入简介 Stacked injections: 堆叠注入.从名词的含义就可以看到应该是一堆 sql 语句(多条)一起执行.而在真实的运用中也是这样的, 我们知道在 ...

  10. 在Dynamics CRM中自定义一个通用的查看编辑注释页面

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复162或者20151016可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! 注释在CRM中的显示是比较特别, ...