Git commit格式参考

前言

文章首发于Noah Sun’s Home Git commit格式参考,转载请注明出处,谢谢!

编写良好的Commit messages可以达到以下几个重要的目的

  • 加快review的流程
  • 帮助我们编写良好的版本发布日志
  • 让之后的维护者了解代码里出现特定变化和feature被添加的原因

目前,社区有多种 Commit message 的写法规范。来自Angular 规范是目前使用最广的写法,比较合理和系统化。如下图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A2EGlMzg-1584887393563)(http://image.noahsun.top/git_commit_guidelines/angular_commit_example.jpg)]

Commit messages格式

当前业界应用的比较广泛的是 Angular Git Commit Guidelines

具体格式为:

<type>: <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>

每个commit message一般包含header、body和footer,header是必须的,body和footer不做强制要求,所以一般可以简化为

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

或者省略scope

<type>: <subject>

说明

  • type: 本次 commit 的类型,诸如 bugfix docs style 等
  • scope: 本次 commit 波及的范围
  • subject: 简明扼要的阐述下本次 commit 的主旨
  • body: 同样使用祈使句,在主体内容中我们需要把本次 commit 详细的描述一下,比如此次变更的动机
  • footer: 描述下与之关联的 issue 或 break change,详见案例

例子

feat(jqLite): add prop() support
fix(ngStyle): correctly remove old style when new style value is invalid
docs(developers): commit message format typo
style(animator): style cleanup
refactor(filter): filters are now injectable and services
perf(*): don't trigger digests after enter/leave of structural directives
test(mocks): test mocks with compiled angular
chore(release): preparing release notes for 0.10.3

Type

类型必须是以下其中一种

  • feat: 新功能
  • fix: bug fix
  • docs: 只改了文档
  • style: 代码格式修改,不影响代码的逻辑性,比如空格,格式化,缺失分号等
  • refactor: 代码重构,既不是bug fix也不是新功能
  • perf: 性能优化
  • test: 补充或修改测试代码
  • chore: 改变构建流程,或者增加依赖库和工具等,比如增加文档生成工具

Scope

范围可以是指定提交更改位置的任何内容,比如search, location, browser, compile等

你可以使用*来代替多个范围

Subject

主题包含对变更的简洁描述,有几个要求

  • 使用祈使句和现代时,比如使用change而不是changed或者changes
  • 首字母不要大写
  • 句末无需使用句号

Body

主体与主题一样,应使用祈使句和现代时,应包括改变的动机,并将其与以前的行为进行对比。

Footer

描述一些重大的修改和相关的问题,详情参考 AngularJS Message footer

Revert

当回滚提交时,必须以 revert: 作为开头然后紧跟着该提交的header。

body部分可以这样描述


This reverts commit <hash>.

hash是将要被回滚的那个提交的SHA码。

参考

您必须知道的 Git 分支开发规范
angular.js-git-commit-guidelines
AngularJS Git Commit Message Conventions

<think>好的,用户想了解git commit的定义和使用方法。首先,我需要明确git commit在版本控制系统中的作用。记得git commit是将暂存区的更改保存到本地仓库的操作,这应该是核心点。然后,用户可能还不太清楚基本流程,比如需要先add再commit,这里需要分步骤说明。 接下来,用户可能遇到常见问题,比如如何写提交信息、修改提交或者撤销操作。这些是实际使用中常遇到的,需要给出具体命令和示例。例如,git commit -m直接添加信息,而git commit --amend用来修改最近的一次提交。 另外,用户提供的参考引用里有提到Commitizen和Git Auto Commit Action,这些工具可以优化提交过程,可能需要简要介绍一下,但不要偏离用户的主要问题。比如Commitizen引导生成规范的提交信息,适合团队协作时使用,而GitHub Action自动化提交,适合CI/CD流程。 还要注意回答的结构,先定义,再使用方法,分步骤说明,然后常见问题,最后扩展工具。确保每个部分清晰,用例子帮助理解。比如在基本用法里给出命令行示例,这样用户可以直接复制使用。 需要检查是否有遗漏的重要点,比如提交信息的重要性,良好的习惯对团队协作的影响。可能用户没问,但作为最佳实践应该提及。同时,确保所有引用正确对应,比如引用[2]关于git status和提交命令的顺序,引用[1]提到Commitizen的使用方法。 最后,生成的相关问题要围绕git commit的扩展,比如规范、撤销方法、与push的区别,以及自动化工具。这些问题可以帮助用户进一步深入学习,解决可能遇到的后续疑问。</think>### Git Commit的定义及使用方法 #### 一、Git Commit的定义 Git commitGit版本控制系统中将**暂存区(Staging Area)**的修改永久记录到本地仓库的操作。每次提交会生成唯一的40位SHA-1哈希值标识,并包含提交者信息、时间戳和提交注释[^2]。 #### 二、基本使用流程 1. **添加修改到暂存区** ``` git add <文件名> # 添加单个文件 git add . # 添加所有修改 ``` 2. **执行提交操作** ``` git commit -m "提交说明" ``` 示例:`git commit -m "修复用户登录验证逻辑"` 3. **验证提交状态** 使用 `git log` 查看提交记录,`git status` 确认工作区状态[^2] #### 三、进阶用法 | 场景 | 命令 | 说明 | |---------------------|--------------------------------------|-----------------------------| | 修改最近提交 | `git commit --amend -m "新说明"` | 可修正提交信息或追加文件[^3] | | 空提交(触发CI/CD) | `git commit --allow-empty -m "提示"` | 常用于流水线触发场景 | | 跳过预提交钩子 | `git commit --no-verify` | 紧急情况下绕过检查 | #### 四、提交规范建议 推荐采用[Conventional Commits](https://www.conventionalcommits.org/)规范: ```bash git commit -m "feat(用户模块): 新增手机号验证功能" git commit -m "fix(API): 修复分页参数溢出问题" ``` #### 五、常见问题解决 1. **误提交文件** ``` git reset HEAD~1 # 撤销最近一次提交 git reset --soft HEAD~1 # 保留修改到暂存区 ``` 2. **提交信息错误** ``` git commit --amend # 进入Vim编辑器修改 ``` 3. **部分文件漏提交** ``` git add missing_file.txt git commit --amend --no-edit ``` #### 六、扩展工具推荐 1. 使用**Commitizen**规范化提交(引用[^1]): ``` npm install -g commitizen git cz # 替代git commit ``` 2. **Git Auto Commit Action**(引用[^4])可自动执行提交操作,适用于CI/CD流程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值