Android开发中Git提交规范配置

151 阅读4分钟

在多人协作开发中,统一规范的提交信息不仅能提高代码审查质量,还能为自动化发布、持续集成和变更日志生成提供基础保障。本指南将介绍如何通过 Git Hooks 自动校验提交信息格式。

🎯 为什么需要规范 Git 提交信息?

规范的 Git 提交信息能带来显著的效益:

团队协作一致性:每个人都用一样的规范写 commit,减少沟通成本

提升可读性:一眼看出本次提交的类型和影响范围

便于代码审查:审查者能快速了解改动意图

支持自动化流程:基于 commit 信息自动发版和生成变更日志

团队协作一致性:统一的规范减少沟通成本

提交信息格式规范

基本格式

<type>(<scope>): <subject>

格式说明

  • type:变更类型(必填)
  • scope:影响模块/子系统(可选但推荐)
  • subject:简短描述(必填)

正确示例

feat(login): 添加微信登录功能
fix(utils): 修复空指针异常
docs(readme): 更新安装说明
chore: 更新依赖版本

支持的提交类型

类型图标说明
feat💡新功能开发
fix🐛Bug 修复
docs📝文档更新(README、注释等)
style💅代码格式调整(空格、换行等,不涉及逻辑)
refactor🔧代码重构(既不是新功能也不是修复)
test测试代码的添加或修改
chore🔩构建脚本、依赖更新等杂项任务
perf🚀性能优化
ci🛠持续集成配置修改
build🏗️构建系统相关变动
revert↩️回退之前的提交

Scope 命名规范

scope 应该使用小写字母、数字、连字符或下划线,表示影响的模块或功能区域:

常用分类示例

分类示例说明
业务模块login, signup, cart, order, payment具体业务功能区域
UI组件button, dialog, form, input, table界面组件层面的变动
工具类utils, http, config, theme工具函数、配置等
架构模块api, model, repository, viewmodel代码目录或逻辑层
构建部署build, ci, docker, scripts脚本、构建系统等
文档readme, docs, license文档相关改动
测试test, unit-test, integration-test测试代码

自动校验脚本配置

安装步骤(macOS/Linux)

  1. 进入项目的 Git Hooks 目录

    cd your_project/.git/hooks
    
  2. 创建 commit-msg 钩子文件

    # 如果存在 commit-msg.sample,需要重命名
    mv commit-msg.sample commit-msg
    # 或者直接创建新文件
    touch commit-msg
    chmod +x commit-msg
    
  3. 编辑钩子文件

    nano commit-msg
    

校验脚本代码

#!/bin/sh

# Git commit-msg hook - 校验提交信息格式
# 格式要求: <type>(<scope>): <subject>

commit_msg_file="$1"
commit_msg=$(head -n1 "$commit_msg_file")

# 支持的提交类型
types="feat|fix|docs|style|refactor|test|chore|perf|ci|build|revert"

# 校验正则表达式
# 格式: type(scope): subject 或 type: subject
pattern="^(${types})(\([a-zA-Z0-9_-]+\))?: .+"

if ! echo "$commit_msg" | grep -Eq "$pattern"; then
    echo ""
    echo "❌ 提交信息格式错误!"
    echo "---------------------------------------"
    echo "✅ 正确格式:<type>(<scope>): <subject>"
    echo "✅ 示例:feat(login): 添加微信登录功能"
    echo ""
    echo "📋 支持的提交类型:"
    echo "  feat     💡 新功能开发"
    echo "  fix      🐛 Bug 修复"
    echo "  docs     📝 文档更新"
    echo "  style    💅 格式调整"
    echo "  refactor 🔧 代码重构"
    echo "  test     ✅测试相关"
    echo "  chore    🔩 杂项任务"
    echo "  perf     🚀 性能优化"
    echo "  ci       🛠 CI/CD 配置"
    echo "  build    🏗️ 构建系统"
    echo "  revert   ↩️ 回退提交"
    echo ""
    echo "📌 scope 命名建议:"
    echo "  业务模块: login, cart, order"
    echo "  UI组件: button, dialog, form"
    echo "  工具类: utils, config, api"
    echo "---------------------------------------"
    exit 1
fi

exit 0

使用效果展示

正确提交示例

$ git commit -m "feat(auth): 添加JWT认证功能"
[main a1b2c3d] feat(auth): 添加JWT认证功能

错误提交示例

$ git commit -m "add login feature"

❌ 提交信息格式错误!
---------------------------------------
✅ 正确格式:<type>(<scope>): <subject>
✅ 示例:feat(login): 添加微信登录功能
...

其他方式

你也可以安装Android studio plugin 插件进行提交检验,由于笔者习惯使用命令行的方式,所以没有使用。至于市面上其他的方式如node.js 中安装xxx 方式,个人觉得没有这种必要。当然你也可以使用。

最佳实践建议

编写高质量提交信息的技巧

  1. 保持简洁明了:主题行控制在50字符以内
  2. 使用动词开头:如"添加"、"修复"、"更新"
  3. 描述做了什么,而不是怎么做:关注变更的结果
  4. 保持一致性:团队内统一使用中文或英文
  5. 避免无意义的信息:如"修改"、"更新"等模糊描述

团队协作建议

  1. 制定团队规范:在项目README中说明提交信息规范
  2. 定期回顾:在代码审查时检查提交信息质量
  3. 工具集成:配置IDE插件或命令行工具辅助编写
  4. 持续改进:根据项目特点调整type和scope分类

常见问题解答

Q: 钩子脚本不生效怎么办? Q: mac中修改完成之后没有起作用? A: 检查脚本是否内容是否正确,检查文件权限是否设置正确(chmod +x commit-msg),确保文件名为commit-msg而非commit-msg.sample

Q: 如何在现有项目中推广? A: 可以先在新分支中配置,团队讨论后再合并到主分支,同时提供培训和文档支持。

Q: 是否可以自定义type类型? A: 可以修改脚本中的types变量,但建议遵循约定式提交规范以保持通用性。

通过以上配置,就能拥有统一、规范的Git提交历史,为项目的长期维护和自动化流程奠定坚实基础。