跳到主要内容

CommitMessage编写

约定式提交:一种用于给提交信息增加人机可读含义的规范

部分整理自:梨羽咲奈 QQ: 384110086

注意:本文内容可能与他人习惯有较大不同!


不同语言常用的提交方式是不一样的, 比如一些后端语言不会携带前缀,往往是大写字母开头的一句话, 提交风格不同往往在某个语言内都有自己的习俗,无需学习统一规范, 应该向语言圈子内看齐。


记忆点:

  • ci: 代表调整或修复流水线。
  • 删除 remove 可以用 chorefeat
  • 一个仓库用的最多的前缀应该是 chore,万能前缀。
  • style 可用可不用,因为 chore: code style 可以替代。
  • chore 就是代表杂活,比如 修理typo ,这个标准因人而异,所以什么都可以算杂活

一些自动生成 changelog 的工具,他们只保留 featfixdocs,而忽略 chore 等。 所以另一个判断依据是,您的本次改动希望别人知道吗?他是显著的吗,比如是,他可能是 feat ,如果不是,是一些不想被人知道的杂物修改,就可以算 chore


perf这个有点不太好理解,我有时优化了算法算perf, 但有时更新了依赖版本感觉也算perf。

perf不能含有任何代码实质运行的变化,只能改善性能。

perf可以用

chore: improve xxx

一般使用perf,给人的感觉是显著性的性能加强, 一般出现于有性能瓶颈了,才会进行性能的改动, 否则他可能是 chorerefactor


~/.gitmessage
# <type>[(optional scope)]: <subject>
# <BLANK LINE>
# [optional body]
# <BLANK LINE>
# [optional footer(s)]

# type 字段包含:
# * fix: A bug fix
# * feat: A new feature
# * docs: 文档层面的更改
# ~ style: 代码格式的调整,比如缺失的符号之类的,不存在代码逻辑上的变更
# * refactor: 重构代码
# ~ perf: (显著性)提高性能的代码更改
# ~ test: 添加测试、重构测试,无应用代码修改。
# ~ build: 调整包管理器,构建脚本等配置内容,无应用代码修改
# ~ ci: 调整 CI 配置内容,无应用代码修改
# * chore: 杂项修改
# * revert: 撤销提交

# optional scope
# init: Initialize commit
# security: Security to invite users to upgrade in case of vulnerabilities
# deps: Dependencies upgrading or downgrading
# config: Configuration changes
# i18n: Internationalization and localization
# ...

# about revert
# If the commit reverts a previous commit, it should begin with revert:, followed by the header of the reverted commit.
# In the body it should say: This reverts commit <hash>., where the hash is the SHA of the commit being reverted.

# subject: Short summary
# - Do nt end with a period
# - Not cased
# - Start writing in lower case
# - 100 chars or less
# - Use the imperative mood

# optional scope 用于说明 commit 影响的范围,比如数据层、控制层、视图层等等。
# init: Initialize commit
# security: Security to invite users to upgrade in case of vulnerabilities
# deps: Dependencies upgrading or downgrading
# config: Configuration changes
# i18n: Internationalization and localization
# ...

# subject是 commit 目的的简短描述,不超过50个字符,且应开始于大写字母。结尾无限标注句号。使用祈使句的形式来描述一个 Commit 的动作。比如,使用 change; 而不是 changed 或 changes
# - Do nt end with a period
# - Not cased
# - Start writing in lower case
# - 100 chars or less
# - Use the imperative mood

# optional body 部分是对本次 commit 的详细描述,可以分成多行。由于 Commit 的复杂程度不同,因此不要求每个 Commit 都写内容。主体内需要说明 What (是什么)和 Why (为什么),以确保阅读你的 Commit 的人能够明了前因后果。编写正文时,需要注意标题和正文之间的空行,并限制每一行的长度不超过 72 个字符。
# optional footer(s) 用来关闭 Issue 或以 BREAKING CHANGE 开头,后面是对变动的描述、以及变动理由和迁移方法。eg.fix #199
# optional body: Explain why this change is being made.
# - Wrap it to about 100 characters or so
# - Can use multiple lines with "-" for bullet points
# - Explain what and why vs. how

# optional footer(s): Provide links or keys to any relevant tickets
# - Wrap it to about 100 characters or so
# Linking a pull request to an issue using a keyword
# - close #ISSUE-NUMBER
# - fix #ISSUE-NUMBER
# - resolve #ISSUE-NUMBER
~/.gitconfig
[commit]
template = ~/.gitmessage