git commit 使用及规范

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git commit 使用及规范相关的知识,希望对你有一定的参考价值。

参考技术A

git提交推荐使用命令行工具,请严格遵循提交格式。

在您 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

commitlint

git commit 提交规范 & 规范校验

Git Commint规范

CSDN:http://blog.csdn.net/y550918116j

GitHub:https://github.com/937447974

以上是关于git commit 使用及规范的主要内容,如果未能解决你的问题,请参考以下文章

Git Commit Log提交规范

Git commit 规范

Git commit 规范

推荐git commit 规范和如何在 commit 里使用 emoji

推荐git commit 规范和如何在 commit 里使用 emoji

推荐git commit 规范和如何在 commit 里使用 emoji