git commit 提交规范

本文详细介绍如何撰写清晰、有意义的git commit message,包括commit message的结构、类别标识和写作指南,帮助开发者创建易于理解的提交历史。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

git的提交使用git commit -m "hello world"来提交comment,但是一些像hello world这样没有意义的comment让人无法理解这次的提交到底是为了什么
下面是一些基础介绍如果觉得麻烦直接查看第二部分

1. commit message format(信息域)

commit message一般分为三个部分Header,Body 和 Footer


<type>(<scope>): <subject>
// 空一行
<body>
// 空一行
<footer>

其中,Header 是必需的,Body 和 Footer 可以省略

Example:
PS D:\git\pythonPractice> git log
commit 58a7a966acb9aa2fffc0e02c9ce3be64b8949991 (HEAD -> master)
Author: Zhiwei Tian <hebeitianzhiwei@outlook.com>
Date:   Fri Aug 17 17:38:36 2018 +0800

    feat(serve): add grpc server
1.1 HEAD
  • type用于说明 commit 的类别,只允许使用下面7个标识
feat:新功能(feature)
fix:修补bug
docs:文档(documentation)
style: 格式(不影响代码运行的变动)
refactor:重构(即不是新增功能,也不是修改bug的代码变动)
test:增加测试
chore:构建过程或辅助工具的变动
revert: 回滚到上一个版本

  • 非必填(建议填写), 用于说明 commit 影响的范围,建议填写影响的功能模块。如果修改影响不止一个 scope,可以使用 * 代替
  • subject comment所在的位置,这次提交的简短描述,必填,commit 目的的简短描述,不超过50个字符,以动词开头,使用第一人称现在时,比如 change,而不是changed或changes, 第一个字母小写,结尾不加句号

2 Body

是对本次 commit 的详细描述,可以分成多行
非必填(建议填写),可描述当前修改的行为详细信息或修改的目的

1.3 Footer

部分只用于两种情况

  • 不兼容变动

  • 如果当前代码与上一个版本不兼容,则 Footer 部分以BREAKING CHANGE开头,后面是对变动的描述、以及变动理由和迁移方法

  • 关闭 Issue
    如果当前 commit 针对某个issue,那么可以在 Footer 部分关闭这个 issue (可依次关闭过个issueCloses #123, #245, #992)

1.4 Revert

还有一种特殊情况,如果当前 commit 用于撤销以前的 commit,则必须以revert:开头,后面跟着被撤销 Commit 的 Header

revert: type(scope):  some comment
This reverts commit bfe307ce57d87677c6c473c228e6c2ed8b81dcec.

Body部分的格式是固定的,必须写成This reverts commit .,其中的hash是被撤销 commit 的 HSHA 标识符。

如果当前 commit 与被撤销的 commit,在同一个发布(release)里面,那么它们都不会出现在 Change log 里面。如果两者在不同的发布,那么当前 commit,会出现在 Change log 的Reverts小标题下面

引用:git commit 提交规范

### Git Commit Message 规范示例 #### 单行提交信息格式 每次提交应当只解决一个问题,这有助于简化代码审查过程并提高可追溯性。单行提交信息应该简洁明了,通常不超过72个字符[^1]。 ```plaintext type(scope): subject ``` - `type` 表示更改的性质(如 feat, fix) - `scope` 是可选字段,用于指定受影响的部分或模块名称 - `subject` 描述所做的改动摘要 #### 完整多行提交信息结构 对于更复杂的变更,则推荐采用如下完整的多行格式: ```plaintext type(scope): subject Body explaining the change and its motivation. Footer with any relevant issue references. ``` 其中: - **Header**: 包含三部分——类型(type),作用域(scope)以及主题(subject) - **Body**: 对修改原因及实现细节做进一步解释说明;如果适用的话还可以提及如何测试这些变化。 - **Footer**: 如果有的话,在这里注明关联的问题编号或者其他元数据信息,例如关闭某个GitHub Issues。 #### 实际案例展示 ##### 添加新功能的例子 当向项目中引入新的特性时,可以这样书写commit message: ```plaintext feat(user-profile): add avatar upload feature Allow users to upload avatars from their local machines or via URL links. This enhancement improves user experience by personalizing profiles. Closes #1234 ``` ##### 修复Bug的例子 针对错误修正类别的提交消息则像下面这样表达: ```plaintext fix(authentication): resolve login redirect loop on Safari browser The previous implementation caused an infinite redirection when logging in using Safari due to incorrect handling of session cookies. The solution was implemented according to best practices outlined at MDN Web Docs regarding secure cookie settings. Fixes #9876 ``` #### 工具支持 为了确保团队成员都能遵循一致的消息格式化规则,建议使用工具辅助验证。例如可以通过配置 pre-commit hook 来运行 validate-commit-msg 或者集成 CI/CD 流程中的检查脚本以自动拒绝不符合规定的提交请求[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值