首页/开发/Git 与协作速查/变更日志规范(Keep a Changelog)

变更日志规范(Keep a Changelog)

给使用者看的版本化说明:按版本分组,用 Added/Changed/Fixed 等类型记录可感知变化,而不是流水账式提交罗列。

Git 与协作速查开发更新于 2026-10-13

变更日志怎么写

面向使用者的版本化变更说明:按版本分组,用「新增、变更、修复、移除」这类类型记录可感知的变化,而不是把提交日志直接罗列成流水账。它关心使用者会遇到什么变化,而不是开发过程中的每一步。

基本信息

面向对象使用者与集成方
结构版本号加类型分组,例如新增、变更、修复、移除
与提交的区别提交是过程记录,变更说明是结果描述
版本对应每个条目对应一个发布版本,与标签保持一致
维护时机随改动同步更新,而不是发布前突击补写

典型使用场景

  • 对外发布时需要告知使用者有哪些变化
  • 升级前需要判断是否影响兼容性
  • 内部服务变更需要通知调用方
  • 需要把破坏性变更单独标注出来
  • 给使用者一个可长期查阅的版本历史

文件片段示例

文件片段示例
## [2.4.0] - 2026-10-01
### 新增
- 单点登录与账号绑定
### 修复
- 修正重试计数溢出导致的连接中断
### 变更
- 默认超时从 30 秒调整为 10 秒
### 破坏性变更
- 移除旧版回调地址,请改用新版地址

分组类型

分组记录内容
新增新增的能力或接口
变更行为、默认值或配置的变化
修复缺陷修复,并说明影响面
移除与弃用将要下线的内容及替代方案
变更说明写「发生了什么变化」,与发布说明互补:一个看长期历史,一个看本次升级的注意事项。
破坏性变更必须单独标注并给出迁移方式,否则使用者升级时只能靠试错摸索。
随改动同步更新比发布前突击补写省事:改动还在脑子里时写下的描述更准确。
版本分组与标签保持一致,排查版本差异时两边才能对上号。

易错点

  • 直接抓取提交日志当变更说明,粒度与语言都不适合使用者阅读
  • 版本条目与标签不一致,排查版本差异时对不上号
  • 漏标破坏性变更,使用者升级后才发现接口被移除,故障排查被拖长
  • 只在发布前突击补写,只记得住最近的改动,早先的变化被遗漏

数据来源与参考

  • Keep a Changelog(keepachangelog.com)
  • Semantic Versioning 2.0.0(semver.org)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌