专业网站设计制作,网站建设大概需要多少钱,数字营销技术应用中级实训答案,wordpress 商品导航在现代软件开发中#xff0c;良好的 Git 提交信息不仅有助于项目协作、问题追踪和历史回溯#xff0c;更是保障项目可维护性的重要一环。本文将基于 AngularJS 团队广泛使用的 Git 提交信息规范#xff0c;手把手教你如何写出专业、统一、可读性强的 commit message。 ✨ 为…在现代软件开发中良好的 Git 提交信息不仅有助于项目协作、问题追踪和历史回溯更是保障项目可维护性的重要一环。本文将基于 AngularJS 团队广泛使用的 Git 提交信息规范手把手教你如何写出专业、统一、可读性强的 commit message。 ✨ 为什么要遵守 Git 提交规范
遵守统一的提交规范可以带来以下好处
✅ 自动生成清晰的 CHANGELOG.md✅ 在使用 git bisect 调试时可跳过不相关提交✅ 浏览历史时一目了然快速定位变更位置与内容✅ 增强协作与团队沟通效率✅ 为代码审查、回滚、统计等操作提供结构化支持 提交信息的结构
标准的 Git 提交信息应遵循以下格式
type(scope): subject
BLANK LINE
body
BLANK LINE
footer⚠️ 每一行 建议不超过 100 个字符以便在 Git 工具或 GitHub 等平台中更好地展示。 1️⃣ Header头部
格式如下
type(scope): subjecttype说明 commit 的类型详见下文scope可选说明 commit 影响的范围如模块、组件等subject简洁明了地描述本次修改内容动词开头、小写、无句号 示例
feat(router): add lazy-loading support
fix(login): prevent crash on invalid credentials
docs(api): update user guide for v2 endpoints2️⃣ Type类型
下面是推荐的类型type及其用途说明
Type用途feat新功能fix修复 Bugdocs文档变更style格式修改不影响逻辑例如空格、分号等refactor代码重构不是新功能也不是 Bug 修复test增加测试或修改现有测试chore构建流程、工具等杂项维护revert回滚某次提交 3️⃣ Scope范围
scope 是对变更影响模块的说明例如
模块名$http, $compile, auth, router文件或功能名ngClick, form, login-page
没有明确 scope 时可以使用 * 代替
chore(*): update all dependencies4️⃣ Subject主题
这是 commit 的简要描述
使用动词原形如“add”、“fix”、“refactor”使用现在时态如 “change”而非 “changed”不以大写字母开头不以句号结尾
✅ 正确示例
add support for dark mode❌ 错误示例
Added support for dark mode.5️⃣ Body正文
正文用于说明提交的 动机、前后行为对比 或 技术细节。规范要求
使用 现在时、命令式语气分段描述避免堆砌句子 示例
Old behavior did not support lazy loading,
which caused bundle size to be large on initial load.This commit introduces a dynamic import-based strategy
to only load modules when needed.6️⃣ Footer页脚
页脚用于列出 Breaking Changes破坏性变更
使用 BREAKING CHANGE: 开头说明该变更会破坏兼容性并附上迁移建议
BREAKING CHANGE: remove deprecated authToken paramUse accessToken instead and update middleware config accordingly.关联 Issues
通过 Closes #123 形式自动关闭对应 Issue
Closes #123, #456Revert回滚提交
如果需要撤销某次提交格式如下
revert: feat(router): add lazy-loading supportThis reverts commit e7a8db27f2d8deac3c8e2731ffb33f.使用范例大全
以下是一些完整的 commit message 示例供参考
feat($browser): onUrlChange event (popstate/hashchange/polling)Added new event to $browser:
- forward popstate event if available
- fallback to hashchange
- finally use polling if no event is supportedBREAKING CHANGE: removed $browser.onHashChange
Closes #128fix($compile): fix HTML serialization in IE9Older IE versions serialize HTML in uppercase, but IE9 does not.
Case-insensitive comparison is required, but jasmine lacks support.Closes #392docs(guide): fix typos in directive guide- correct batchLogbatchLog - batchLog
- fix indentation and braces实用技巧与命令推荐 查看历史提交摘要Subject
git log last-tag HEAD --prettyformat:%s仅筛选新增功能提交
git log last-tag HEAD --grep feat忽略无意义提交如格式调整
git bisect skip $(git rev-list --grep irrelevant good-commit HEAD)✅ 总结
一个优秀的提交信息应当是
格式统一信息清晰语义明确可自动化处理如生成 changelog
如果你想让你的团队协作更顺畅让开源项目更专业从写好每一个 commit message 开始吧 参考资料
AngularJS Git Commit GuidelinesHow to Write a Git Commit Message – Chris BeamsA Note About Git Commit Messages – tBaggery