当前位置: 首页 > news >正文

Git 完整的提交规范教程

约定式提交规范

本文中的关键词 “必须(MUST)”、“禁止(MUST NOT)”、“必要(REQUIRED)”、“应当(SHALL)”、“不应当(SHALL NOT)”、“应该(SHOULD)”、“不应该(SHOULD NOT)”、“推荐(RECOMMENDED)”、“可以(MAY)” 和 “可选(OPTIONAL)”

  1. 每个提交都必须使用类型字段前缀,它由一个名词构成,诸如 feat 或 fix , 其后接可选的范围字段,可选的 !,以及必要的冒号(英文半角)和空格。
  2. 当一个提交为应用或类库实现了新功能时,必须使用 feat 类型。
  3. 当一个提交为应用修复了 bug 时,必须使用 fix 类型。
  4. 范围字段可以跟随在类型字段后面。范围必须是一个描述某部分代码的名词,并用圆括号包围,例如: fix(parser):
  5. 描述字段必须直接跟在 <类型>(范围) 前缀的冒号和空格之后。 描述指的是对代码变更的简短总结,例如: fix: array parsing issue when multiple spaces were contained in string 。
  6. 在简短描述之后,可以编写较长的提交正文,为代码变更提供额外的上下文信息。正文必须起始于描述字段结束的一个空行后。
  7. 提交的正文内容自由编写,并可以使用空行分隔不同段落。
  8. 在正文结束的一个空行之后,可以编写一行或多行脚注。每行脚注都必须包含 一个令牌(token),后面紧跟 :<space> 或 <space># 作为分隔符,后面再紧跟令牌的值脚注的令牌必须使用 - 作为连字符,比如 Acked-by (这样有助于 区分脚注和多行正文)。有一种例外情况就是 BREAKING CHANGE,它可以被认为是一个令牌。
  9. 脚注的值可以包含空格和换行,值的解析过程必须直到下一个脚注的令牌/分隔符出现为止。
  10. 破坏性变更必须在提交信息中标记出来,要么在 <类型>(范围) 前缀中标记,要么作为脚注的一项。
  11. 包含在脚注中时,破坏性变更必须包含大写的文本 BREAKING CHANGE,后面紧跟着冒号、空格,然后是描述,例如: BREAKING CHANGE: environment variables now take precedence over config files 。
  12. 包含在 <类型>(范围) 前缀时,破坏性变更必须通过把 ! 直接放在 : 前面标记出来。 如果使用了 !,那么脚注中可以不写 BREAKING CHANGE:, 同时提交信息的描述中应该用来描述破坏性变更。
  13. 在提交说明中,可以使用 feat 和 fix 之外的类型,比如:docs: updated ref docs. 。
  14. 工具的实现必须不区分大小写地解析构成约定式提交的信息单元,只有 BREAKING CHANGE 必须是大写的。
  15. BREAKING-CHANGE 作为脚注的令牌时必须是 BREAKING CHANGE 的同义词。

为什么使用约定式提交

提交类型标题描述表情符号发布包含在变更日志中
feat特征一个新功能minortrue
fixBug修复错误修复patchtrue
docs文档仅文档更改patch如果scopereadmetrue
style风格不影响代码含义的更改(空格、格式、缺少分号等)-true
refactor代码重构既不修复错误也不添加功能的代码更改-true
perf性能改进提高性能的代码更改patchtrue
test测试添加缺失的测试或纠正现有的测试-true
build构建影响构建系统或外部依赖项的更改(示例范围:gulp、broccoli、npm)patchtrue
ci持续集成对我们的 CI 配置文件和脚本的更改(示例范围:Travis、Circle、BrowserStack、SauceLabs)-true
chore家务活不修改 src 或测试文件的其他更改-true
revert还原恢复之前的提交-true

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C语言牢大坠机
  • Python类实例的json
  • 微信小程序写一个可以滚动虚拟列表(瀑布流),减少dom渲染的优化,解决内存问题。
  • 使用 HTTPS 已成为网站的标配了
  • 二叉树的链式结构
  • 关于忠诚:忠于自己的良知、理想、信念
  • bash条件判断基础adsawq1`1nn
  • 七大排序-冒泡排序,插入排序,希尔排序(一)
  • ffmpeg 安装 h264(x264)encoder
  • 哈喽GPT-4o,对GPT-4o 论文速写的思考与探索
  • css 选择器汇总
  • 普中51单片机:数码管显示原理与实现详解(四)
  • 在本地运行React集成TypeScript的项目
  • BulingBuling - 作息安排 [Reset Your Routine] - 1
  • 【初阶数据结构】深入解析循环队列:探索底层逻辑
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • go语言学习初探(一)
  • Java 网络编程(2):UDP 的使用
  • Linux链接文件
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 安装python包到指定虚拟环境
  • 蓝海存储开关机注意事项总结
  • 前端js -- this指向总结。
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 我建了一个叫Hello World的项目
  • 小程序开发之路(一)
  • 异步
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • # 计算机视觉入门
  • #HarmonyOS:基础语法
  • #if等命令的学习
  • (C++二叉树05) 合并二叉树 二叉搜索树中的搜索 验证二叉搜索树
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (java)关于Thread的挂起和恢复
  • (纯JS)图片裁剪
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (每日一问)设计模式:设计模式的原则与分类——如何提升代码质量?
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (贪心) LeetCode 45. 跳跃游戏 II
  • (五)c52学习之旅-静态数码管
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)nsfocus-绿盟科技笔试题目
  • (转)关于pipe()的详细解析
  • (转载)PyTorch代码规范最佳实践和样式指南
  • **PHP分步表单提交思路(分页表单提交)
  • .ai域名是什么后缀?
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .Net Core 生成管理员权限的应用程序
  • .NET Standard 的管理策略
  • .net 调用php,php 调用.net com组件 --
  • .Net环境下的缓存技术介绍
  • .NET项目中存在多个web.config文件时的加载顺序
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • [8] CUDA之向量点乘和矩阵乘法