编程之路

  • home
  • article
  • class
  • label
  • utils

  • 搜索
Elasticsearch MongoDB 衡量点 aop 边缘计算 框架 物联网 敏捷开发 团队 压力测试 Markdown 学习方法 学习 产品 规范 日志 微服务 壁纸 开发平台 Java 全栈 前端 开发规范 MQTT CentOS 镜像站 IntelliJ IDEA FreeMarker UML 计算机 软件 Tomcat Netty Web Service Docker Dubbo Kafka NoSQL Redis 消息队列 RocketMQ RabbitMQ ActiveMQ 分布式事务 Spring 队列 Java 高级 GC JVM HTTP 网络安全 算法 设计模式 Spring Cloud Web SpringMVC 线程池 并发 锁🔒 多线程 Git Java 集合 Java 基础 MyBatis 数据库 MySQL Java 基础面试题 Java Nginx Linux Spring Boot

你必须知道的 Git 分支开发规范

发表于 2021-10-27 | 分类于 工具 | 0 | 阅读次数 901

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

1.jpg

日志规范

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

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

  • 加快 review 的流程
  • 帮助我们编写良好的版本发布日志
  • 让之后的维护者了解代码里出现特定变化和 feature 被添加的原因

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

2.jpg

Commit messages 的基本语法

当前业界应用的比较广泛的是:https://github.com/angular/ang ... lines

具体格式为:

<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 地址或者其它文档
# Git
Git 常用命令速查表(收藏大全)
Git 语义化版本
  • 文章目录
  • 站点概览
Adrian

Adrian

曙光在头上,不抬起头,便永远只能看见物质的闪光。

120 日志
11 分类
70 标签
RSS
Creative Commons
Links
  • 美团技术团队
  • 阮一峰
  • 程序猿DD
  • SpringBoot 中文社区
  • 在线文档
  • Bean Searcher
  • OkHttps
  • Grails
  • Sa-Token
  • 程序员的进击之路
  • bugstack 虫洞栈
  • Java 全栈知识体系
  • Gobrs-Async
  • 查询网
  • 微信开放社区
  • 物联网技术指南
  • emqx
  • 看云
  • 深圳核酸检测点查询
  • Hutool
  • Spring
  • V2EX
  • v-charts
  • Vert.x 官方文档
  • Vert.x 官方文档中文翻译
  • 极客时间
  • Apache RocketMQ 开发者指南
  • 知了
  • 阿里云知行动手实验室
  • Learn Git Branching
  • Spring Boot 教程
  • 未读代码
  • 如梦技术
  • jpom
  • Cubic
  • Easy-Es
  • bing-wallpaper
  • solon
  • LuatOS
  • ThingsBoard
  • Linux 中国◆开源社区
  • Apache Dubbo
  • Jenkins
  • 技术文章摘抄
  • VueJS
  • MapStruct
  • elasticsearch 中文社区
  • Apollo(阿波罗)
  • TiKV文档
  • Chrome插件分享
  • 一步步搭建物联网系统(教你设计物联网系统)
  • 全栈增长工程师指南
  • 程序员的自我修养
  • Pro Git(中文版)
  • 学习 Web 开发
  • 极客教程
  • PingCAP 文档中心
  • 酷壳
  • Refactoring Guru 网站
  • 学习 Java 语言
  • smart-doc
  • mybatis-plus
  • 字母哥博客
0%
© 2023 Adrian
由 Halo 强力驱动
|
主题 - NexT.Gemini v5.1.4