git commit 使用及规范
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git commit 使用及规范相关的知识,希望对你有一定的参考价值。
参考技术Agit提交推荐使用命令行工具,请严格遵循提交格式。
在您 git add 后,推荐执行 git commit 进行提交,如无特殊描述信息要添加,也可以 git commit -m <mess> 进行提交。
要求提交格式如下:
type表示提交类别,scope表示修改范围,subject表示标题行, body表示主体描述内容。
type在commit的是否必须存在。
非必填(建议填写),scope用于说明 commit 影响的范围,建议填写影响的功能模块。
如果你的修改影响了不止一个 scope ,你可以使用 * 代替。
必填, commit 目的的简短描述,不超过50个字符。
非必填(建议填写),可描述当前修改的行为详细信息或修改的目的。
非必填,一般用于描述BREAKING CHANGE,在项目开发中一般不需要填写,组件研发的工程需要填写。
格式:以 BREAKING CHANGE 开头,后面是对变动的描述、以及变动理由和迁移方法。
如上2所示格式,本质上是改变文件 <u> .git/COMMIT_EDITMSG </u> 中的文本,实际提交过程如下(推荐命令行提交):
window系统下默认git编辑工具是vim,如无相关基础,建议使用window默认的文本编辑器(这里不赘述vim相关编辑方法)。
修改git默认文本编辑器: git config core.editor notepad
修改后执行 git commit ,会弹出文本编辑器。
我们要按照规定的格式在注释前加入要提交的commit信息:
然后保存并关闭,会提示如下信息:
在push完成后,gitlab的commit列表中会有如下信息:
在您执行 git commit 后,命令行会有如下显示:
如上所示,我们要按照规定的格式在注释前加入要提交的commit信息:
输入完成后,根据快捷键提示,按 ctrl + O ,然后出现要修改的MSG文件名,按回车键。此时提示如下:
最后按 ctrl + X 提交完成,提示如下:
在push完成后,gitlab的commit列表中会有如下信息:
Git commit 规范
在多人协作项目中,良好的 commit 风格如下所示
这里使用的工具是 commitlint。
1 Commitlint message 的格式
Commitlint 基于 Angular 的规范。很多工具也是基于此规范, 它的 message 格式如下:
// Header
<type>(scope): <subject>
// 空一行
Body
// 空一行
Footer
Header 是必需的,注意冒号后面有空格,Body 和 Footer 可以省略。 1. Header:Header部分只有一行,包括三个字段:type(必需)、scope(可选)和subject(必需) 1. type:用于说明 commit 的类型,被指定在 commitlint.config.js 的 type-enum。 2. scope: 用于说明 commit 的影响范围,可以省略。 3. subject:subject 是 commit 目的的简短描述,不超过50个字符,且结尾不加句号(.)。 2. Body: body 部分是对本次 commit 的描述,可以分成多行。 3. Footer: footer 用于不兼容变动和关闭ISSUE。 # 2 Commitlint 安装 ## 2.1 commitlint.config.js git 根目录新建 commitlint.config.js 文件,添加如下代码。
module.exports =
extends: ['@commitlint/config-conventional'],
rules:
'subject-case': [0, 'never'],
'type-enum': [
2,
'always',
[
"docs", // Adds or alters documentation. 仅仅修改了文档,比如README, CHANGELOG, CONTRIBUTE等等
"chore", // Other changes that don't modify src or test files. 改变构建流程、或者增加依赖库、工具等
"feat", // Adds a new feature. 新增feature
"fix", // Solves a bug. 修复bug
"merge", // Merge branch ? of ?.
"perf", // Improves performance. 优化相关,比如提升性能、体验
"refactor", // Rewrites code without feature, performance or bug changes. 代码重构,没有加新功能或者修复bug
"revert", // Reverts a previous commit. 回滚到上一个版本
"style", // Improves formatting, white-space. 仅仅修改了空格、格式缩进、都好等等,不改变代码逻辑
"test" // Adds or modifies tests. 测试用例,包括单元测试、集成测试等
]
]
;
## 2.2 package.json 命令行进入 git 根目录,执行 `npm init` 创建 package.json。 打开 package.json 粘贴如下代码。
"scripts":
"commitmsg": "commitlint -E GIT_PARAMS"
执行命令 `npm install –save-dev @commitlint/cli,config-conventional husky` 安装 commitlint 和 husky。 安装完毕后,打开 package.json 后如下所示。
"name": "yjcocoa",
"version": "8.3.0",
"description": "YJ系列开源库",
"author": "阳君",
"license": "MIT",
"homepage": "https://github.com/937447974/YJCocoa",
"repository":
"type": "git",
"url": "https://github.com/937447974/YJCocoa.git"
,
"bugs":
"url": "https://github.com/937447974/YJCocoa/issues"
,
"main": "commitlint.config.js",
"devDependencies":
"@commitlint/cli": "^7.0.0",
"@commitlint/config-conventional": "^7.0.1",
"husky": "^0.14.3"
,
"scripts":
"commitmsg": "commitlint -E GIT_PARAMS",
"commit": "commit"
执行测试命令如下所示,验证 commitlint 是否起效。
测试通过后,将
# Node
node_modules/
package-lock.json
添加到 .gitignore,检查本地代码后提交并推送到服务器。
团队其他人员 pull 代码后,命令行进入 git 根目录执行 npm install 即可使用 commitlint 提交规范。
Appendix
Related Documentation
Copyright
CSDN:http://blog.csdn.net/y550918116j
GitHub:https://github.com/937447974
以上是关于git commit 使用及规范的主要内容,如果未能解决你的问题,请参考以下文章
推荐git commit 规范和如何在 commit 里使用 emoji