news 2026/6/7 3:02:31

别再用常规提交规范!Linux、Git等项目的带作用域提交法才是更好选择

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
别再用常规提交规范!Linux、Git等项目的带作用域提交法才是更好选择

别再使用常规提交规范了

你很可能之前就遇到过 常规提交规范。它可能曾在你使用过的开源项目的更新日志中冒出来,也可能是你贡献过的开源项目强制要求的提交格式。很多人对它深信不疑,但作者却对此嗤之以鼻。尽管众多知名开源项目都在使用这一规范,但常规提交规范实际上是一个糟糕的标准,它 让人关注无关紧要的东西,且无法兑现它的承诺 。

关注点的失败

常规提交规范承诺为提交信息添加语义,以帮助开发者和最终用户理解提交中所做的更改。然而,它在这方面的表现却一塌糊涂。提交信息应按以下格式编写:<类型>[可选作用域]: <描述> [可选正文] [可选脚注]。这种格式有一个重大缺陷: 类型的优先级高于作用域 。这完全是本末倒置。

作用域比类型更重要

更改的 _作用域_(即更改的主题)是提交中最重要的部分。贡献者、调试人员、事故响应人员更关心更改的作用域而非类型。常规提交规范将作用域的优先级降得很低,甚至使其成为 _可选_ 的,还将 _类型_ 放在提交信息的最前面,完全搞错了作用域和类型的优先级。

类型冗余且具有局限性

提交的描述几乎总能告诉你更改的类型,把字符浪费在类型上毫无帮助,而且它往往不仅无用,还具有局限性。常规提交规范从根本上关注了错误的东西(提交类型),而贬低了作用域(这才是人们真正关心的)。

无法兑现的承诺

我们来看看常规提交规范所谓的好处是否合理。

自动生成更新日志

这是常规提交规范最大的承诺,但更新日志的受众与提交日志的受众完全不同,任何将它们结合起来的尝试都会导致效果不佳。

自动确定语义版本号的升级(基于提交的类型)

软件工程的实际情况往往会严重影响准确完成这项任务的可行性,在一些情况下,工具会错误地识别出重大更改。

向团队成员、公众和其他相关人员传达更改的性质

常规提交规范无法满足团队成员和公众对更新日志和提交日志的不同需求。

触发构建和发布流程

这是个糟糕的主意,可能会让自动化工具被绕过,需要人工来识别问题。

通过提供更结构化的提交历史,让人们更轻松地为你的项目做出贡献

提交历史确实更结构化了,但并不能让贡献变得更容易。常规提交规范的所有“卖点”都站不住脚,而且在项目中也极难应用。

更好的方法

不妨借鉴 Linux、FreeBSD、Git、Go 和 NixOS 等真正成功的软件项目的做法,它们都使用带作用域前缀的提交信息。以下是一些项目及其提交格式指南的示例:

项目格式示例
Linux`子系统: 描述``i2c: virtio: mark device ready before registering the adapter`
FreeBSD`前缀: 描述``linuxulator: Return EINVAL for invalid inotify flags`
Git`区域: 描述``gitlab-ci: update macOS image`
Go`包: 描述``net/http/cookiejar: add godoc links`
nixpkgs`包名: 描述``xwayland: 24.1.11 -> 24.1.12`
Node.js`子系统: 描述``stream: fast-path stateless transform flush results`

遗憾的是,尽管这种提交风格被一些有史以来最成功的开源项目所采用,但在品牌竞争中似乎败下阵来。作者打算改变这一现状,介绍 scopedcommits.com,该网站致力于倡导回归合理的提交信息编写方式,并将更新日志生成与提交日志管理的关注点分开。

结论

常规提交规范所谓的优势实际上是虚幻的,行业采用这一标准并未获得任何实际益处。作者写这篇文章的目的是挑战常规提交规范的主导地位,并展示有更好的方式来构建提交信息。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/7 2:58:20

手把手教你用STM32F103的DAC+DMA输出正弦波(附完整代码和波形分析)

STM32F103 DACDMA正弦波生成实战指南&#xff1a;从原理到示波器验证第一次接触STM32的DAC功能时&#xff0c;看着开发板上那两个神秘的模拟输出引脚&#xff0c;我总好奇它们能否像函数发生器那样输出流畅的正弦波。直到某次智能家居项目中需要生成音频测试信号&#xff0c;才…

作者头像 李华
网站建设 2026/6/7 2:56:17

【字节跳动】本文披露了字节跳动巨量引擎AdOS系统的150项核心工业级参数配置,涵盖广告竞价、机器学习推理、系统调度、硬件管理等关键维度。主要技术参数包括:广告内核初始化栈帧28KB、CTR/CVR前

巨量引擎 AdOS 底层工业级参数 500 条&#xff08;字节内部生产级固化&#xff09; 本文披露了字节跳动巨量引擎AdOS系统的150项核心工业级参数配置&#xff0c;涵盖广告竞价、机器学习推理、系统调度、硬件管理等关键维度。主要技术参数包括&#xff1a;广告内核初始化栈帧28K…

作者头像 李华
网站建设 2026/6/7 2:55:14

AKShare的stock_zh_a_hist函数避坑指南:参数错误、数据缓存与批量处理实战

AKShare股票数据获取实战&#xff1a;从参数解析到高效缓存的完整解决方案在金融数据分析领域&#xff0c;获取准确、完整的股票历史数据是量化研究和策略回测的基础。AKShare作为新兴的金融数据接口库&#xff0c;其stock_zh_a_hist函数提供了便捷的A股历史数据获取途径。但在…

作者头像 李华