Changelog 生成与管理规范
变更日志(Changelog)是一个按时间顺序排列的列表,记录了项目中每个版本值得注意的变更。
使用时机
- •项目发布新版本前
- •合并重大 feature 或 fix 后
- •用户要求「更新变更日志」「生成 changelog」「记录本次改动」
- •需要对用户展示项目演进过程时
核心原则 (Keep a Changelog)
- •为人而写:变更日志是给人类阅读的,而不是机器。
- •版本独立:每个版本都应该有独立的内容区块。
- •最新优先:最新的版本排在最前面。
- •包含日期:每个版本都应标注发布日期(YYYY-MM-DD)。
- •链接版本:建议提供版本间差异对比的链接。
变更分类
所有变更必须归入以下类别之一:
- •Added: 新增的功能。
- •Changed: 现有功能的变更。
- •Deprecated: 不建议使用、将在未来版本删除的功能。
- •Removed: 已删除的功能。
- •Fixed: Bug 修复。
- •Security: 安全问题的修复。
格式规范
文件结构示例
markdown
# Changelog 项目的所有显著变更都将记录在此文件中。 本项目遵循 [Semantic Versioning](https://semver.org/lang/zh-CN/) 规范。 ## [Unreleased] ### Added - 支持了自定义键位映射 ([#123](https://github.com/example/repo/pull/123)) ## [1.0.0] - 2026-01-25 ### Added - 初始版本发布。 - 实现基础的文本编辑功能和终端模拟。 ### Fixed - 修复了在某些终端下光标闪烁的问题。 [Unreleased]: https://github.com/example/repo/compare/v1.0.0...HEAD [1.0.0]: https://github.com/example/repo/releases/tag/v1.0.0
与 Git 提交记录的关系
建议结合 git_commit 技能中的 约定式提交 (Conventional Commits) 来生成或更新此文件:
- •
feat->Added - •
fix->Fixed - •
perf->Changed - •
refactor->Changed - •
BREAKING CHANGE->Changed(并高亮说明)
工作流
- •收集变更:使用
git log --pretty=format:"%s"查看自上个版本以来的所有提交。 - •分类整理:根据提交记录的类型将变更归入
Added,Changed,Fixed等类别。 - •编写描述:
- •移除无意义的提交(如
chore:typo)。 - •编写通俗易懂的中文描述。
- •引用相关的 Issue 或 Pull Request 编号。
- •移除无意义的提交(如
- •更新 [Unreleased] 段落:如果是开发中的改动,先更新在
Unreleased下。 - •发布版本:
- •将
Unreleased下的内容移到新版本号下。 - •添加当前日期。
- •更新文件底部的差异对比链接。
- •将