Git Commit Message 规范:写出清晰、可维护的提交记录

文章目录

    • [📌 常见示例汇总(快速查阅)](#📌 常见示例汇总(快速查阅))
      • [🆕 新功能 (feat)](#🆕 新功能 (feat))
      • [🐞 修复 Bug (fix)](#🐞 修复 Bug (fix))
      • [📚 文档更新 (docs)](#📚 文档更新 (docs))
      • [⚙️ 重构 (refractor)](#⚙️ 重构 (refractor))
      • [🚀 性能优化 (perf)](#🚀 性能优化 (perf))
      • [🧪 测试 (test)](#🧪 测试 (test))
      • [🧹 杂项 (chore)](#🧹 杂项 (chore))
      • [💥 不兼容变更](#💥 不兼容变更)
    • [一、为什么需要规范 Commit Message?](#一、为什么需要规范 Commit Message?)
    • [二、Conventional Commits 规范详解](#二、Conventional Commits 规范详解)
      • [1. Header(必需)](#1. Header(必需))
      • [2. Body 与 Footer(可选)](#2. Body 与 Footer(可选))
    • [三、Scope 怎么写?------尤其适用于深度学习项目](#三、Scope 怎么写?——尤其适用于深度学习项目)
      • [✅ 推荐 scope(算法/模型项目)](#✅ 推荐 scope(算法/模型项目))
      • [📌 示例对比](#📌 示例对比)
    • 四、最佳实践建议
    • [五、如何使用 `.gitmessage` 模板(超简单!)](#五、如何使用 .gitmessage 模板(超简单!))
      • [步骤 1:在项目根目录创建 `.gitmessage`](#步骤 1:在项目根目录创建 .gitmessage)
      • [步骤 2:启用模板(仅当前项目)](#步骤 2:启用模板(仅当前项目))

📌 常见示例汇总(快速查阅)

🆕 新功能 (feat)

feat(model): add Vision Transformer backbone
feat(data): support COCO-style augmentation

🐞 修复 Bug (fix)

fix(loss): correct gradient flow in focal loss
fix(train): handle empty batch in DDP

📚 文档更新 (docs)

docs(config): document learning rate schedule

⚙️ 重构 (refractor)

refactor(data): migrate to torchvision transforms v2

🚀 性能优化 (perf)

perf(train): enable mixed-precision with autocast

🧪 测试 (test)

test(eval): add mAP calculation for detection

🧹 杂项 (chore)

chore(experiment): integrate Weights & Biases logging

💥 不兼容变更

text 复制代码
refactor(model): remove legacy ResNet-18 config

BREAKING CHANGE: Default backbone is now ViT-B/16.
Update your config.yaml accordingly.

Closes #42

一、为什么需要规范 Commit Message?

  • 提升可读性:快速理解变更目的
  • 支持自动化:语义化版本、CHANGELOG 自动生成
  • 简化协作:审查者聚焦逻辑,而非猜测意图
  • 便于追溯 :通过 git log 快速定位问题模块

二、Conventional Commits 规范详解

格式:

复制代码
<type>[optional scope]: <description>

[optional body]

[optional footer(s)]

1. Header(必需)

  • Typefeatfixdocsrefactorperftestbuildcichore
  • Scope(可选)按逻辑功能模块命名(见下文详解)
  • Description:祈使句、小写开头、无句号、≤72 字符

✅ 示例:
feat(model): add Swin Transformer
fix(data): skip corrupted samples in loader


2. Body 与 Footer(可选)

  • Body:解释"为什么改",非"怎么改"
  • Footer :关联 Issue(Closes #123)或标注破坏性变更(BREAKING CHANGE: ...

三、Scope 怎么写?------尤其适用于深度学习项目

核心原则:按功能模块或流程阶段,而非文件路径。

✅ 推荐 scope(算法/模型项目)

Scope 说明
model 网络结构(如 ViT、ResNet)
loss 损失函数设计
data 数据加载、预处理、增强
train 训练流程、checkpoint
eval 评估指标、验证逻辑
inference 推理/部署
config 超参与配置
utils 工具函数(可视化、日志等)
experiment 实验跟踪(W&B、TensorBoard)

📌 示例对比

不推荐 ❌ 推荐 ✅
feat(src/models/vit.py): ... feat(model): add ViT-B/16 support
fix(train_loop.py): ... fix(train): handle NaN loss gracefully
refactor(utils/vis.py): ... refactor(utils): improve attention map visualization

💡 自测问题 :如果在组会上汇报,你会说"我改了什么部分"?

------ 那就是你的 scope!


四、最佳实践建议

  1. 一次提交只做一件事 → 保持原子性
  2. 避免模糊描述 :❌ update modelfeat(model): add dropout to classifier head
  3. 优先使用英文 → 便于工具解析与协作
  4. 团队统一 scope 词典 → 在 CONTRIBUTING.md 中定义常用 scope

五、如何使用 .gitmessage 模板(超简单!)

步骤 1:在项目根目录创建 .gitmessage

text 复制代码
# <type>(<scope>): <description>
#
# Example (DL project):
# feat(model): add Swin Transformer
# fix(data): skip corrupted images in loader
#
# Common scopes: model, loss, data, train, eval, config, utils, experiment
# Types: feat, fix, docs, refactor, perf, test, chore, build, ci
#
# Body: Explain *why*, not *how*. Keep lines < 72 chars.
# Footer: Closes #123 or BREAKING CHANGE: ...
#
# ------ 删除注释后填写内容 ------

步骤 2:启用模板(仅当前项目)

bash 复制代码
git config commit.template .gitmessage

✅ 之后每次 git commit 都会自动加载模板,引导你写出规范提交。

相关推荐
前端赵哈哈5 小时前
Git 本地仓库操作指南:将未提交文件复刻至新分支(无需关联远端)
前端·git·github
空空kkk5 小时前
Java——接口
java·开发语言·python
神秘的猪头5 小时前
git应用初体验
git
飞翔的佩奇5 小时前
【完整源码+数据集+部署教程】【运动的&足球】足球比赛分析系统源码&数据集全套:改进yolo11-RFAConv
前端·python·yolo·计算机视觉·数据集·yolo11·足球比赛分析系统
智启七月5 小时前
Dexbotic 开源深度解析:重构具身智能 VLA 研发的技术基石与实现路径
人工智能·python
beyond阿亮6 小时前
nacos支持MCP Server注册与发现
java·python·ai·nacos·mcp
感哥6 小时前
Python 装饰器
python
快秃头的码农6 小时前
vscode搭建python项目隔离的虚拟环境
ide·vscode·python
mxpan6 小时前
从 0 到 1:用 Python 对接阿里云 DashScope,轻松实现 AI 对话功能
python·ai编程