Git 提交信息的规范是为了确保代码历史清晰、一致并且易于理解。下面是一些常见的 Git 提交信息规范,以及分支命名的建议:

1. 提交信息规范

一般提交信息结构

  • 提交信息一般由标题(Subject)和正文(Body)两部分组成。
  • 标题:简洁明了,通常在 50 字符以内,描述提交的目的或解决的问题。
  • 正文:对提交的详细说明,包含背景信息、动机、实现细节等。可选,一般在需要时使用,换行与正文之间有空行。

提交标题的规范:

  • 使用 祈使句(Imperative mood),例如:Add feature, Fix bug, Refactor code

  • 动词应放在开头,并且简洁明了。比如:

    • Add login feature(新增登录功能)
    • Fix memory leak issue(修复内存泄漏问题)
    • Refactor authentication logic(重构认证逻辑)

    避免使用过去时态,如 Added, Fixed,因为 Git 提交是描述这次提交的意图和动作,而非结果。

提交正文:

  • 如果提交信息需要进一步的说明,可以在标题下添加正文部分。

  • 详细描述提交的动机、影响和实现的细节。

  • 如果该提交解决了一个问题(比如 bug),可以添加相关的 #issue 编号。

    例如:

    Fix memory leak in image processing module
    
    The image processing module was not freeing memory correctly, 
    which caused memory to be leaked during long-running sessions. 
    This fix ensures memory is properly released after processing.
    Closes #1024
    

提交类型的前缀(可选)

为了让提交更有条理,可以根据提交的类型添加一些前缀,常见的类型包括:

  • feat: 新功能(Feature)
  • fix: 修复(Bug Fix)
  • docs: 文档修改
  • style: 代码格式修改(不涉及功能)
  • refactor: 代码重构
  • test: 测试相关的修改
  • chore: 其他杂项修改(比如构建工具、脚本等)

例如:

  • feat: add user login functionality
  • fix: resolve crash on app startup
  • chore: update dependencies

2. 分支命名规范

分支的命名应该简洁、清晰,且具有一定的规则。常见的分支命名方式有:

  • 功能开发feature/<功能描述>,比如:feature/user-authentication
  • 修复问题fix/<bug描述>,比如:fix/login-page-crash
  • 热修复hotfix/<问题描述>,比如:hotfix/critical-bug-fix
  • 发布版本release/<版本号>,比如:release/v1.2.0
  • 开发环境dev/<描述>,比如:dev/integration-testing
  • 临时分支test/<描述>,比如:test/debug-tracking

分支命名规则:

  • 使用短横线分隔单词,避免使用下划线。
  • 使用小写字母,保持一致性。
  • 分支命名应简洁明了,避免冗长。

3. 每日更新代码的 Commit 信息

对于每日更新代码的提交,可以使用简洁的描述来表示,比如:

  • update: daily code refactoring
  • chore: sync with master branch
  • fix: minor bug fixes

如果是与某个任务或功能相关的更新,可以加上更详细的描述:

  • feat: work in progress on user login
  • fix: correct validation for email input

4. 合并分支时的 Commit 信息

合并分支时,Git 会生成默认的提交信息。你可以添加简洁明了的描述来标识合并:

  • merge: integrate feature/login into develop
  • merge: sync release with latest changes

总结

通过遵循一致的提交信息和分支命名规范,可以帮助团队成员更清楚地了解每次提交的意图,同时也便于后期代码的维护与回溯。