youyichannel

志于道,据于德,依于仁,游于艺!

0%

立刻!马上!规范你的 Commit/Pull Request!

引言

在日常的开发中,我们通常会使用 git 来管理代码,当我们对代码就行改动之后,可以通过 git commit 来提交对代码的修改。

git 规定提交时需要填写提交信息,用来作为改动备注保存在 commit 历史中,方便溯源。那么,规范的提交信息不仅有助于他人 review,还可以输出有效的CHANGE LOG,甚至对于项目的研发质量都有很大的提升。

但是很遗憾,在日常的工作中,大多数同学的提交信息都是粗略写写,没有很好的重视,这对于项目的管理维护来说是非常不友好的。那么,接下来我就来分享下关于 git commit / pull request 的一些规范,让提交信息好看还实用

为什么要规范 Commit?

对于企业和开源软件来说,规范 commit 的好处体现的多个维度,比如说:

  • 便于项目的管理和维护
  • 统一组织规范,提升组织的专业度,增强开发者对软件的信心

对于个人开发来说:

  • 便于开发者对提交历史进行溯源,了解发生的具体情况
  • 便于进行 code review,提高效率
  • 规格化的 commit 信息可以用于自动化输出 CHANGE LOG,方便软件的迭代管理
  • 对于 Type 和 Scope 的约束,可以使得开发者会细心规划 Commit 的内容和范围,做到 One Commit, One Thing

规范哪些内容?

规范的提交信息:

<type>[optional scope]: <description>

[optional body]

[optional footer(s)]

参考 Conventional Commits

如何限制?

限制 PR 的 Title,遵循 Conventional Commits 的规范

对于GitHub来说,可以使用 GitHub Action 这个神级功能来进行限制,配置内容如下:

name: Check PR Title

on:
pull_request_target:
types:
- opened
- edited
- synchronize

permissions:
pull-requests: read

jobs:
main:
name: Validate PR title
runs-on: ubuntu-latest
steps:
- name: check pr semantic
uses: amannn/action-semantic-pull-request@v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
# https://www.conventionalcommits.org/en/v1.0.0/
# Configure which types are allowed (newline-delimited).
types: |
fix
feat
docs
style
ci
refactor
perf
test
chore
build
revert
requireScope: true

关于 GitHub Action 的相关知识,看这里

限制 PR 仅允许 Squash 的方式进行合并

限制 Squash 的方式进行合并,并且以 PR 的标题作为 Commit 信息,达到同时限制分支的 commit 和 PR 的效果。

PS:限制合并代码方式后,可能会损失一些提交记录,但是这样也是在提醒开发同学们避免提交大型 PR,通过一些小型 PR 来完成代码提交,同时也降低了 code reviewer 的负担。

实用工具辅助

生成Change Log的方式参考:Commit message 和 Change log 编写指南