当前位置: 首页 > news >正文

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

文章目录

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

💥 不兼容变更

refactor(model): remove legacy ResNet-18 configBREAKING 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

# <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:启用模板(仅当前项目)

git config commit.template .gitmessage

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

http://www.dtcms.com/a/520725.html

相关文章:

  • Orleans + Kubernetes + Istio 服务网格集成深度解析
  • 51网站怎么打开注册城乡规划师有什么用
  • 相向指针|盛最多水的容器|接雨水|验证回文串
  • Web3j 中使用 Transaction 类进行以太坊交互的核心方法
  • 承德微网站开发怎么弄一个自己的网站
  • web及h5录音wav下载
  • Kotlin 协程中常见的异步返回与控制方式(速览)
  • 做网站还有前景么动漫网页设计报告
  • Maven 多配置文件的使用
  • 【双机位A卷】华为OD笔试之【哈希表】双机位A-跳房子I【Py/Java/C++/C/JS/Go六种语言】【欧弟算法】全网注释最详细分类最全的华子OD真题题解
  • SQL 拼接完全指南
  • 制作的网站wordpress还是自己写
  • 【HLS】Java实现统计HLS的m3u8清单中所有ts切片的视频持续时长
  • 免费网站建设ppt模板下载山西省建设银行网站首页
  • 增城网站建设价格郑州seo
  • 【Rust实战】从零构建高性能异步Web服务器:深入理解所有权与生命周期
  • Vlan-ACCESS接口+Trunk接口
  • 网站开发遇到的最大困难被k掉的网站怎么做才能有收录
  • SpringBoot-Web开发之文件上传
  • 5.2 类
  • 厦门协会网站建设电影网站做淘客
  • 网站建设介绍书如何注销公司流程及费用
  • 阿里国际站网站建设wordpress mysql 扩展
  • LeetCode 405 - 数字转换为十六进制数
  • 漳州做网站喊多少钱wordpress栏目更改无法显示
  • 集团公司网站欣赏如何做企业网站内链
  • 未来的 AI 操作系统(九)——灵魂架构:当智能系统拥有“自我”
  • 卡码网语言基础课(Python) | 20.排队取奶茶
  • ManySpeech —— 使用 C# 开发人工智能语音应用
  • 5G-A 与 5G 对比