Git 提交规范

article/2025/10/4 18:34:27

1. 背景

Git 是目前世界上最先进的分布式版本控制系统,在我们平时的项目开发中已经广泛使用。而当我们使用Git提交代码时,都需要写Commit Message提交说明才能够正常提交。

git commit -m "提交"

然而,我们平时在编写提交说明时,通常会直接填写如"fix"或"bug"等不规范的说明,不规范的提交说明很难让人明白这次代码提交究竟是为了什么。而在工作中,一份清晰简介规范的 Commit Message 能让后续代码审查、信息查找、版本回退都更加高效可靠。因此我们需要一些工具来约束开发者编写符合规范的提交说明。

2. 提交规范

那么,什么样的提交说明才能符合规范的说明呢?不同的团队可以制定不同的规范,当然,我们也可以直接使用目前流行的规范,比如[Angular Git Commit

Guidelines。接下来将会对目前流行的Angular提交规范进行介绍。

2.1 提交格式

符合规范的Commit Message的提交格式如下,包含了页眉(header)、正文(body)和页脚(footer)三部分。其中,header是必须的,body和footer可以

忽略。

<type>(<scope>): <subject>
// 空一行
<body>
// 空一行
<footer>

2.2 页眉设置

页眉(header)通常只有一行,包括了提交类型(type)、作用域(scope)和主题(subject)。其中,type和subject是必须的,scope是可选的。

2.2.1 提交类型

提交类型(type)用于说明此次提交的类型,需要指定为下面其中一个:

img

2.2.2 作用域

作用域(scope)表示此次提交影响的范围。比如可以取值api,表明只影响了接口。

2.2.3 主题

主题(subject)描述是简短的一句话,简单说明此次提交的内容。

2.3 正文和页脚

正文(body)和页眉(footer)这两部分不是必须的。

如果是破坏性的变更,那就必须在提交的正文或脚注加以展示。一个破坏性变更必须包含大写的文本 BREAKING CHANGE,紧跟冒号和空格。脚注必须只包含 B R E A K I N G C H A N G E 、 外 部 链 接 、 i s s u e 引 用 和 其 它 元 数 据 信 息 BREAKING CHANGE、外部链接、issue 引用和其它元数据信息 BREAKINGCHANGEissue。例如修改了提交的流程,依赖了一些包,可以在正文写上:BREANKING CHANGE:需要重新npm install,使用npm run cm代替git commit。

下面给出了一个Commit Message例子,该例子中包含了header和body。

chore: 引入commitizenBREANKING CHANGE:需要重新npm install,使用npm run cm代替git commit

当然,在平时的提交中,我们也可以只包含header,比如我们修改了登录页面的某个功能,那么可以这样写 Commit Message。

feat(登录):添加登录接口

3.使用Git命令行提交信息

为了规范commit信息,可以配置一个全局的 commit message template ,所有提交的 commit message

都按照这个配置来写

首先新建模板文件:

在任意目录下新建.getmessage.txt ,填入以下模板

# <类型>:(影响范围) <主题> # <body># <footer># 类型字段包含:
#     feat:新功能(feature)
#     fix:修复bug
#     doc:文档(documentation)
#     style: 格式化 ESLint调整等(不影响代码运行的变动)
#     refactor:重构(即不是新增功能,也不是修改bug的代码变动)
#     test:增加测试
#     build: 影响构建系统或外部依赖项的更改(maven,gradle,npm 等等)
#     ci: 对CI配置文件和脚本的更改
#     chore:对非 src 和 test 目录的修改
#     revert: Revert a commit
# 影响范围:
#     用于说明 commit 影响的范围,比如修改的登录页、账户中心页等
# 主题:
#    commit目的的简短描述,不超过50个字符
# Body 部分是对本次 commit 的详细描述,可以分成多行
# Footer用来关闭 Issue或以BREAKING CHANGE开头,后面是对变动的描述、
#       以及变动理由和迁移方法

3. Commitizen

虽然有了规范,但是还是无法保证每个人都能够遵守相应的规范,因此就需要使用一些工具来保证大家都能够提交符合规范的Commit Message。常用的工具包括了可视化工具和信息交互工具,其中Commitizen是常用的Commitizen工具,接下来将会先介绍Commitizen的使用方法。

3.1 什么是Commitizen

Commitizen是一个撰写符合上面Commit Message标准的一款工具,可以帮助开发者提交符合规范的Commit Message。

3.2 安装Commitizen

可以使用npm安装Commitizen。其中,cz-conventional-changelog是本地适配器。

npm install commitizen cz-conventional-changelog --save-dev

3.3 配置Commitizen

安装好Commitizen之后,就需要配置Commitizen,我们需要在package.json中加入以下代码。其中,需要增加一个script,使得我们可以通过执行npm run cm

来代替git commit,而path为cz-conventional-changelog包相对于项目根目录的路径。

”script": {  "cm: "git-cz"},"config": {"commitizen": {"path": "./node_modules/cz-conventional-changelog"}
}

配置完成之后,我们就可以通过执行npm run cm来代替git commit,接着只需要安装提示,完成header、body和footer的编写,就能够编写出符合规范的

Commit Message。

img

4. vscode可视化提交工具

除了使用Commitizen信息交互工具来帮助我们规范Commit Message之外,我们也可以使用编译器自带的可视化提交工具。接下来,将会介绍VSCode可视化提交工具的使用方法。

在VSCode的EXTENSIONS中找到 git-commit-plugin插件,点击install进行安装。

img

安装完成之后,可以通过git add添加要提交的文件,接着,在Source Control点击show git commit template图标,开始编写Commit Message信息。

img

接下来只需要按照指引进行Commit Message的编写。

img

当编写完成之后,可以得到符合规范的Commit Message,这个时候就可以放心将Commit Message及所修改的文件进行提交啦。

img

5. idea可视化工具

idea 安装此插件:Git Commit Template
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
参数解析如下:

  • feat: 新功能
  • fix: 修复bug
  • docs: 只有文档改变
  • style: 并没有影响代码的意义(空格,去掉分号,格式的修改等)
  • refactor: 代码的修改并没有修改bug,也没有添加新功能
  • perf: 代码的修改提高的性能
  • test: 添加测试
  • build: 影响构建系统或外部依赖项的更改(maven,gradle,npm 等等)
  • ci: 对CI配置文件和脚本的更改
  • chore:对非 src 和 test 目录的修改
  • revert: Revert a commit

影响范围: 用于说明commit影响的范围,比如 修改的登录页,账户中心等

Body 部分是对本次 commit 的详细描述,可以分成多行

Footer用来关闭 Issue或以BREAKING CHANGE开头,后面是对变动的描述、 以及变动理由和迁移方法


http://chatgpt.dhexx.cn/article/tODVHBYW.shtml

相关文章

git 提交命令(附加git常用命令)

一、提交到git仓库 1、进入git终端、输入git init指令、会在当前目录生成一个.git的文件夹 git init2、然后通过git status 查看&#xff0c;该指令作用是 列出修改过的(绿色标识)、新创建的(红色标识)、已经暂存但未提交的文件(白色标识) git status3、然后通过git add ind…

git提交

Git提交代码步骤 1.1 第1步&#xff1a;同步远程仓库代码&#xff1a;git pull 提交代码第1步&#xff1a;git pull 同步远程仓库代码到本地 git add / git commit代码之前首先git pull&#xff0c;需先从服务器上面拉取代码&#xff0c;以防覆盖别人代码&#xff1b;如果有…

你真的了解单点登录(SSO)吗? 单点登录实现方式

在程序开发中&#xff0c;特别是网站类开发&#xff0c;会接触到单点登录(SSO)&#xff0c;什么是单点登录&#xff1f;单点登录(SSO)有什么用&#xff1f;下面就来详细介绍一下。 1 单点登录 1.1 什么是单点登录 单点登录的英文名叫做&#xff1a;Single Sign On&#xff0…

单点测试与多点测试

最近在使用PAT与Codeup写程序玩&#xff0c;发现这两者的OJ方式不同。 PAT是单点测试&#xff0c;即输入一组测试用例即可输出结果&#xff0c; 而Codeup是多点测试&#xff0c;即输入所有测试用例后才会输出所有输出结果。 在这里写两个最简单的ab求和小程序来说明二者的区别…

什么是单点登录?如何理解单点登录

什么是单点登录&#xff1f; 什么是单点登录&#xff1f; 因为讲了Cookie&#xff0c;讲了Session&#xff0c;这里我觉得有必要说一下单点登录。我们先来看一下什么是单点登录&#xff1a;单点登录&#xff08;Single Sign On&#xff09;&#xff0c;简称为 SSO&#xff0c;…

单点登录和多点登录

SSO&#xff08;单点登录&#xff09;的概念&#xff1a;在一个多系统共存的环境下&#xff0c;用户在一处登录后&#xff0c;就不用再其他系统中登录&#xff0c;也就是用户的一次登录能得到其他所有系统的信任。 SSO&#xff08;单点登录&#xff09;的应用场景&#xff1a;…

OAuth2.0 实现单点登录

文章目录 OAuth2.0 实现单点登录一、四种授权模式二、搭建验证服务器三、使用 Postman 接口测试四、基于 EnableOAuth2Sso 实现五、基于 EnableResourceServer 实现 &#x1f6a9;&#x1f36c;5.1 资源服务器&#x1f36c;5.2 客户端访问&#x1f36c;5.3 解决远程调用 六、使…

单点登录(SSO)-- 实现单点登录的几种方式

1.为什么需要单点登录 三个角度&#xff1a; 1.1 方便用户的使用&#xff1a;用户登录一次&#xff0c;可以使用不同的服务和页面&#xff0c;省了忘记密码的痛苦1.2 简化开发&#xff1a;SSO让开发人员只要开发一个通用的身份验证框架&#xff0c;就不用为身份验证操心了1.3 …

面试系列:单点登录的知识(一)

大家好&#xff0c;我是车辙&#xff0c;由于目前接手的业务涉及到了单点登录&#xff0c;所以一直在疯狂的去补充这方面的知识。也写下了这篇面试形式的文章&#xff0c;写的不好大家轻点 Diss。 面试开始 在焦急的等待中&#xff0c;一位看上去比较年轻的小伙子走了过来。我…

单点登录实现的几种方式及原理【单点登录】

文章目录 一、什么是单点登录二、单点登录原理三、单点登录实现方式1.基于CookieRedis的单点登录2.分布式session方式实现单点登录3.token验证4.session广播5.CAS 中央认证服务 一、什么是单点登录 单点登录的英文名叫做&#xff1a;Single Sign On&#xff08;简称SSO&#x…

什么是单点登录?怎么样实现单点登录

单点登录SSO&#xff08;Single Sign On&#xff09;说得简单点就是在一个多系统共存的环境下&#xff0c;用户在一处登录后&#xff0c;就不用在其他系统中登录&#xff0c;也就是用户的一次登录能得到其他所有系统的信任。单点登录在大型网站里使用得非常频繁&#xff0c;例如…

什么是单点登录

一、什么是单点登录&#xff1f; 单点登录的英文名叫做&#xff1a;Single Sign On&#xff08;简称SSO&#xff09;。 在初学/以前的时候&#xff0c;一般我们就单系统&#xff0c;所有的功能都在同一个系统上。 后来&#xff0c;我们为了合理利用资源和降低耦合性&#xff…

什么是单点登录?单点登录的三种实现方式

单点登录SSO&#xff08;Single Sign On&#xff09;说得简单点就是在一个多系统共存的环境下&#xff0c;用户在一处登录后&#xff0c;就不用在其他系统中登录&#xff0c;也就是用户的一次登录能得到其他所有系统的信任。单点登录在大型网站里使用得非常频繁&#xff0c;例如…

什么是单点登录(SSO)?单点登录(SSO)到底什么意思?【附逻辑Demo实例】

在程序开发中&#xff0c;特别是网站类开发&#xff0c;会接触到单点登录(SSO)&#xff0c;什么是单点登录&#xff1f;&#xff0c;单点登录(SSO)有什么用&#xff1f;下面软币网小编来来介绍一下&#xff1a; 一、什么是单点登录&#xff1f; 单点登录的英文名叫做&#xf…

分布式系统服务单点问题的探讨

分布式系统服务单点问题的探讨 无状态服务的单点问题有状态服务的单点问题 在分布式系统中&#xff0c;单点问题是一个比较常见的问题&#xff0c;对于单点问题可以分为有状态服务的单点问题和无状态服务的单点问题。 无状态服务的单点问题 对于无状态的服务&#xff0c;单点问…

08-微服务版单点登陆系统(SSO)实践

文章目录 单点登陆系统简介背景分析单点登陆系统概述单点登陆系统解决方案设计 单点登陆系统初步设计服务设计工程结构设计 SSO父工程创建及初始化创建父工程父工程pom文件初始配置 系统基础服务工程设计及实现业务描述表结构设计工程数据初始化创建系统服务工程并初始化Pojo对…

IDEA同时打开多个项目之解决方法

对于我们开发人员来说&#xff0c;有时想在一个窗口中打开多个项目&#xff0c;这时打开新项目时只有两个选项&#xff1a; 覆盖本窗口项目/在新窗口打开 解决方法&#xff1a; 1、点击左上角 File--->Project Structure&#xff1a; 2、然后选择Modules这一栏&#xff0c…

idea一个工作空间打开多个项目

很多时候&#xff0c;多个项目之间并不是parent和module的关系&#xff0c;如果不是parent和module的关系&#xff0c;idea一个工作空间只能打开一个项目&#xff0c;这样的话&#xff0c;如果有多个项目&#xff0c;来回切换视图让人烦不胜烦。下面介绍个在idea一个工作空间打…

Idea打开多个项目文件时,不自动识别maven项目

问题描述 idea打开多个项目文件&#xff08;直接打开的多个项目的文件夹&#xff09;&#xff0c;却没有识别出maven项目。网上查阅&#xff0c;解决方案为&#xff1a; 选中项目的pom.xml文件,右键-" add as maven project"。 但由于项目过多&#xff0c;不方便一个…

idea在一个窗口打开多个项目

1、.将两个项目或多个项目放在同一个文件夹下&#xff08;等同于eclipse中将多个项目放在工作空间workspace下&#xff09;,lz在D盘下创建了ideaCloudProject文件夹&#xff0c;并在该文件夹下创建了一个cloud项目和一个vue项目&#xff0c;如下图&#xff1a; 2、用idea打开该…