如何规范提交你的git commit message

今天被大佬说让我学习下git commit 的格式规范,学习工作的规范是宜早不宜迟啊!不然还是要重新返工,因为跑代码不在本机上,刚开始用git的时候经常来回push。git commit的信息每一次提交就要写,写的多了后来就有点随意了。现在回头看简直惨不忍睹,有用的信息太少无法判断修改的内容在哪里。
今天特此来记录学习,如有错误还望多提意见!

git commit message 格式

  • 提交格式
<type>(<scope>): <subject>
// 空一行
<body>
  • 范例
docs(weekly-report): add final-report folder
    
Add project summary folder final-report. The development process and major problems and improvementsof the image classification and detection model will be reflected in the final-report.md file.
  • 说明

type (必需) scope(可选)和subject(必需)

body(可选)

(1)type用于说明commit的累呗,只允许使用下面8个标识。

1 build: 主要目的是修改项目构建系统(例如glup,webpack,rollup的配置等)的提交
2 ci:主要目的是修改项目继续完成集成流程(例如Travis,Jenkins,GitLab CI,Circle)的提交
3 doc:对应的文档更新
3 feat:项目中的新增功能(feature)
4 fix: bug修复
5 pref:性能优化
6 refactor:重构代码(既没有新功能,也没有修复bug)
7 style:不影响程序逻辑的代码修改(更加规范,加入空白符,补全分号)
8 test:新增测试用例或是更新现有测试
9 revert:回滚某个更早之前的提交
10 chore: 不属于以上类型的其他类型

(2)scope
scope 用于说明commit影响的范围,比如数据层,控制层,视图层等等,视项目的不同而不同

(3)subject
subject是commit内容的尖端描述,不超过50个字符。
义动词开头,使用第一人称现在时,比如change,而不是changed或changes,第一个字母小写。结尾不加英文句号(.)

(4)Body部分是本次commit的详细描述,可以分成多行。

commitizen:替代你的git commit

通过借助工具commitizen/cz-cli的安装之后,就会产生规范性的提示语句,帮助我们形成规范的commit message

首先我们需要安装npm,安装环境需要在linux下,我这里是ubuntu18.04。如果是windows需要使用docker容器,将本地的文件映射到容器中。同学们最好是用linux比较方便。windows家庭版安装docker可以参考这篇文章

apt-get install npm
  • 全局安装
npm install -g commitizen cz-conventional-changelog
echo '{ "path": "cz-conventional-changelog" }' > ~/.czrc

安装成功的界面:docker下的ubuntu

主要, 全局模式下, 需要 ~/.czrc 配置文件, 为 commitizen 指定 Adapter.
安装成功后,在对应的github项目中执行git cz or npm run commit 都可以,效果如下:
在这里插入图片描述
commitlint: 可以帮助我们 lint commit messages, 如果我们提交的不符合指向的规范, 直接拒绝提交, 比较狠.
同样的, 它也需要一份校验的配置, 这里推荐 @commitlint/config-conventional (符合 Angular团队规范).

安装:

npm i -D @commitlint/config-conventional @commitlint/cli

安装过程中如果出现了类似下面的错误:

npm WARN enoent ENOENT: no such file or directory, open '/tmp/git-project/backup/package.json'
npm WARN backup No description
npm WARN backup No repository field.
npm WARN backup No README data
npm WARN backup No license field.

解决方法:
首先初始化项目,一路回车就行

npm init -f

接着安装依赖

npm install formidable --save

然后再输入上面的安装命令
最后再项目目录下创建配置文件.commitlintrc.js;写入

module.exports = {
    
    
  extends: [
    ''@commitlint/config-conventional''
  ],
  rules: {
    
    
  }
};

结合Husky

检验commit message 的最佳方式是结合git hook
安装:

npm i husky@next

出现了下面的错误

npm ERR! Linux 4.9.125-linuxkit
npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "i" "husky@next"
npm ERR! node v8.10.0
npm ERR! npm  v3.5.2

npm ERR! No compatible version found: husky@next
npm ERR! Valid install targets:
npm ERR! 2.4.1, 2.4.0, 2.3.0, 2.2.0, 2.1.0, 2.0.0, 1.3.1, 1.3.0, 1.2.1, 1.2.0, 1.1.4, 1.1.3, 1.1.2, 1.1.1, 1.1.0, 1.0.1, 1.0.0, 1.0.0-rc.15, 1.0.0-rc.14, 1.0.0-rc.13, 1.0.0-rc.12, 1.0.0-rc.11, 1.0.0-rc.10, 1.0.0-rc.9, 1.0.0-rc.8, 1.0.0-rc.7, 1.0.0-rc.6, 1.0.0-rc.5, 1.0.0-rc.4, 1.0.0-rc.3, 1.0.0-rc.2, 1.0.0-rc.1, 0.15.0-rc.13, 0.15.0-rc.12, 0.15.0-rc.11, 0.15.0-rc.10, 0.15.0-rc.9, 0.15.0-rc.8, 0.15.0-rc.7, 0.15.0-rc.6, 0.15.0-rc.5, 0.15.0-rc.4, 0.15.0-rc.3, 0.15.0-rc.2, 0.15.0-rc.1, 0.15.0-beta.16, 0.15.0-beta.15, 0.15.0-beta.14, 0.15.0-beta.13, 0.15.0-beta.12, 0.15.0-beta.11, 0.15.0-beta.10, 0.15.0-beta.9, 0.15.0-beta.8, 0.15.0-beta.7, 0.15.0-beta.6, 0.15.0-beta.5, 0.15.0-beta.4, 0.15.0-beta.3, 0.15.0-beta.2, 0.15.0-beta.1, 0.15.0-beta.0, 0.14.3, 0.14.2, 0.14.1, 0.14.1-2, 0.14.1-1, 0.14.1-0, 0.14.0, 0.14.0-1, 0.14.0-0, 0.13.4, 0.13.3, 0.13.3-0, 0.13.2, 0.13.1, 0.13.0, 0.13.0-1, 0.13.0-0, 0.12.0, 0.12.0-2, 0.12.0-1, 0.12.0-0, 0.11.9, 0.11.8, 0.11.7, 0.11.6, 0.11.5, 0.11.4, 0.11.3, 0.11.2, 0.11.1, 0.11.0, 0.10.2, 0.10.1, 0.10.0, 0.9.3, 0.9.2, 0.9.1, 0.9.0, 0.8.1, 0.8.0, 0.7.0, 0.6.2, 0.6.1, 0.6.0, 0.5.4, 0.5.3, 0.5.2, 0.5.1, 0.5.0, 0.4.3, 0.4.2, 0.4.1, 0.4.0
npm ERR!
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR!     <https://github.com/npm/npm/issues>

npm ERR! Please include the following file with any support request:
npm ERR!     /tmp/git-project/backup/npm-debug.log

尝试官方给出的解决方案,但是没有解决,大家有方法请留言,感激不尽

npm install -g npm

standard-version: 自动生成CHANGELOG

通过以上工具的帮助, 我们的工程 commit message 应该是符合 Angular团队那套, 这样也便于我们借助 standard-version 这样的工具, 自动生成 CHANGELOG, 甚至是 语义化的版本号(Semantic Version).
安装使用:

npm i -S standard-version

package.json配置:

"scirpt": {
    
    
    ...,
    "release": "standard-version"
}

参考来源:https://juejin.im/post/5afc5242f265da0b7f44bee4

给自己警醒:好习惯好命运

猜你喜欢

转载自blog.csdn.net/weixin_42662358/article/details/93169004