如何写好git commit message

介绍如何系统地书写 Git commit message,从格式约定到常见 type 分类,帮助团队提升代码 review 效率和变更可追溯性。

3 分钟765 字

如何写好git commit message开发与工程 · 3 分钟

任何软件项目都是一个协作项目,它至少需要2个开发人员参与,当原始的开发人员将项目开发几个星期或者几个月之后,项目步入正规。不过他们或者后续的开发人员仍然需要经常提交一些代码去修复bug或者实现新的feature。我们经常有这种感受:当一个项目时间过了很久之后,我们对于项目里面的文件和函数功能渐渐淡忘,重新去阅读熟悉这部分代码是很浪费时间并且恼人的一件事。但是这也没法完全避免,我们可以使用一些技巧尽可能减少重新熟悉代码的时间。commit messages 可以满足需要,它也反映了一个开发人员是否是良好的协作者。

编写良好的Commit messages可以达到3个重要的目的:

  • 加快review的流程
  • 帮助我们编写良好的版本发布日志
  • 让之后的维护者了解代码里出现特定变化和feature被添加的原因

关于Commit messages 的格式有多种,不同的社区可能有各自不同的格式,本文介绍的这种做参考即可。

#Commit messages基本语法

Commit messages的基本语法

bashbash折叠展开
<type>: <subject><BLANK LINE><body><BLANK LINE><footer>

Type 表示提交类别,Subject 表示标题行,Body 表示主体描述内容。

Type 的类别说明:

  • feat: 添加新特性(feature)
  • fix: 修复bug
  • docs: 仅仅修改了文档
  • style: 仅仅修改了空格、格式缩进等等,不改变代码逻辑
  • refactor: 代码重构,即不是新增功能,也不是修改bug的代码变动
  • perf: 增加代码进行性能测试
  • test: 增加测试用例
  • chore: 改变构建流程、或者增加依赖库、工具等

#Commit messages格式要求

cc折叠展开
# 标题行:50个字符以内,描述主要变更内容## 主体内容:更详细的说明文本,建议72个字符以内。 需要描述的信息包括:## * 为什么这个变更是必须的? 它可能是用来修复一个bug,增加一个feature,提升性能、可靠性、稳定性等等# * 他如何解决这个问题? 具体描述解决问题的步骤# * 是否存在副作用、风险?## 如果需要的话可以添加一个链接到issue地址或者其它文档

#Commit messages书写建议

  • 尽可能多的提交,单个Commit messages包含的内容不要过多
  • 标题行以Fix, Add, Change, Delete开始,采用命令式的模式。不要使用Fixed, Added, Changed等等
  • 始终让第二行是空白,不写任何内容
  • 主体内容注意换行,避免在git里面滚动条水平滑动
  • 永远不在 git commit 上增加 -m 或 --message= 参数,提交的时候git commit即可。

#参考链接

END · 2026.02.04
IDEA编译jdk8并且在源码中执行printf开发与工程 · 14 分钟
上一篇 · 更早

IDEA编译jdk8并且在源码中执行printf

2026.02.04 · 14 分钟
你可能也想读
开发新功能和重构老代码如何选择2026.02.04 · 2 分钟↗getaddrinfo函数详解及使用举例2026.02.13 · 10 分钟↗如何理解复杂的指针或引用语句2026.02.13 · 1 分钟↗
林
VitahLin

后端工程师 · 写长文
VitahLin 的个人博客,记录经济观察、股票研究,以及后端开发、分布式系统、数据库与 Redis 的原理和工程实践。