【Git】Conventional Commit 约定式提交规范

定义

在 git 代码提交的时候,我们需要对 git 的提交信息做出一定的约定或者规范。为什么会有这样的需求?因为 git 提交时的描述信息,需要在你的合作开发者之间共享,所以大多数情况下 git 提交信息并不只能被你一个人明白。于是就诞生了约定式提交这样的规范。

业内普遍认可的的约定式提交规范,为 约定式提交 (Conventional Commits)

约定式提交规范 Conventional Commits 是一种用于给提交信息增加人机可读含义的规范,是基于提交信息的轻量级约定,提供了一组用于创建清晰的提交历史的简单规则。

它可以利用几组简单的规则来创建清晰的提交历史,这样更有利于编写自动化工具和创建更加结构化的提交历史。

它提供的简单提交说明结构如下:

<类型>([可选的作用域]): <描述>

[可选的正文]

[可选的脚注]

使用

使用的时候,通常遵循以下几个步骤:

// 选择一个提交的类型
1. select the type of change that you're committing

// 更改影响的范围,可不填;如果使用,需要加上()包裹
2. What is the scope of this change (e.g. component or file name): (press enter to skip)

// 简短的描述,使用英文半角冒号+空格隔开
3. Write a short, imperative tense description of the change (max 88 chars)

// 具体描述
4. rovide a longer description of the change: (press enter to skip)

// 是否有破坏性的更改,如果是,则使用 BREAKING CHANGE 标注提交信息
5. Are there any breaking changes?

// 是否有关联性的问题
6. Does this change affect any open issues?

提交的时候,选择的类型通常有以下几种:

feat 表示新增了一个功能

`fix 表示修复了一个 bug

docs 只涉及到文档的更改

style 不影响代码语义的变化(格式化等类型)

refactor 代码重构,既不修复错误也不添加功能

perf 改进性能的代码更改

test 添加确认测试或更正现有的测试

`build 影响构建系统或外部依赖关系的更改

ci 更改持续集成文件和脚本

chore 其他不修改srctest`文件

revert 回退 commit

在提交 log 的时候,按照需要选择提交的时候,应该为以下这种形式的格式:

// 包含作用域的提交
feat(login.vue): add login view 
perf(permission.js): remove useless code
// 其他类型的提交
docs: update README.md

规范检测

此外,为了检查自己的提交是否符合规范,可以安装 commitizen 和 cz-customizable 插件来使用。如果不符合规范,那么提交将会失败。

如果你恰好使用的是 vscode ,那么可以在插件市场下载 vscode commitizen 插件。这样可以摆脱命令行的限制,而且会提交可视化界面给你选取合适的 Conventional Commits 类型。如果使用的是 jetbrains 系列的 IDE ,也可以在插件市场下载 Git Commit Template 或者 Conventional Commit 插件。以前者为例,可以直接提供模板,页面如下所示:

image-20220521022602670

作用

  • 自动化生成 CHANGELOG。
  • 基于提交的类型,自动决定语义化的版本变更。
  • 向同事、公众与其他利益关系者传达变化的性质。
  • 触发构建和部署流程。
  • 让人们探索一个更加结构化的提交历史,以便降低对你的项目做出贡献的难度。
<think>好的,用户想了解Git提交信息的规范和最佳实践。我需要先整理一下已有的引用内容,看看里面提到哪些关键点。引用1提到不同团队有不同的约定,但有一些通用规则,比如要遵循公司或开源项目的规范。引用2主要讲标签和分支的最佳实践,可能和提交信息关联不大。引用3强调保持提交历史健康的基本要素,比如单个提交信息的写法,但未深入其他如压缩提交等。 接下来,我需要结合这些引用,补充常见的提交信息规范,比如Conventional Commits,Angular规范等。用户可能想知道具体格,例如类型前缀、主题行长度、正文和脚注的使用等。还要注意中英文的问题,用户要求用中文回答,所以需要将相关术语翻译准确,同时保持技术术语的正确性。 另外,用户可能对为什么需要规范以及如何实施感兴趣,比如提高可读性、便于生成变更日志等。需要分点说明,结构清晰,最好有示例帮助理解。可能还需要生成相关问题,比如如何选择规范、自动化工具推荐等,确保相关问题与主题紧密相关,并且有实际帮助。 最后,检查是否符合系统级指令,比如数学公的格是否正确,但这里可能用不上数学公。确保引用标识正确添加到对应的观点后面,比如引用1关于遵循团队规范的部分。需要避免使用Markdown,保持回答自然,同时结构分明。</think>关于Git提交信息的规范和最佳实践,以下是关键要点整理: ### 一、基本规范原则 1. **格标准化** 推荐使用`<type>(<scope>): <subject>`格,例如:$fix(login): 修复密码验证逻辑$ 其中`type`表示提交类型(如feat/fix/docs等),`scope`说明影响范围(可选) 2. **主题行限制** - 不超过50字符,以动词开头(如新增/修复/优化) - 避免使用句号结尾[^1] 3. **正文与脚注** - 正文详细说明修改动机和技术方案 - 重大变更需在脚注用`BREAKING CHANGE:`标注 ### 二、常用提交类型 | 类型 | 说明 | |------------|------------------------| | feat | 新增功能 | | fix | 修复缺陷 | | docs | 文档更新 | | style | 代码格调整 | | refactor | 重构代码(不改变功能) | | test | 测试相关 | | chore | 构建或工具链变更 | ### 三、最佳实践示例 ```shell git commit -m "feat(payment): 新增支付宝支付接口 - 实现支付宝SDK接入 - 添加支付回调处理 - 更新API文档第5章节 BREAKING CHANGE: 支付接口返回值结构调整" ``` 这个提交示例符合Angular规范[^3],清晰展示了功能新增、具体修改内容和破坏性变更。 ### 四、团队协作建议 1. 使用commitlint工具自动化校验格 2. 配合`git rebase -i`整理提交历史[^2] 3. 遵循项目现有规范(如开源项目多用Conventional Commits)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值