eclipse git提交代码_来看看大厂的Git提交规范,千万别乱提交代码哦...
点击上方“小黄鸭编程社区”,选择“星标”
作者:人人贷大前端技术中心来源:https://urlify.cn/3a6NNb
git是现在市面上最流行的版本控制工具,书写良好的commit message能大大提高代码维护的效率。但是在日常开发中由于缺少对于commit message的约束,导致填写内容随意、质量参差不齐,可读性低亦难以维护。在项目中引入commit message规范已是迫在眉睫。
# 用什么规范?
现在市面上比较流行的方案是约定式提交规范(Conventional Commits),它受到了Angular提交准则的启发,并在很大程度上以其为依据。约定式提交规范是一种基于提交消息的轻量级约定。它提供了一组用于创建清晰的提交历史的简单规则;这使得编写基于规范的自动化工具变得更容易。这个约定与SemVer相吻合,在提交信息中描述新特性、bug 修复和破坏性变更。它的 message 格式如下:
[可选的作用域]: [可选的正文][可选的脚注]
# Quick Start
1、全局安装commitizen & cz-conventional-changelog
commitizen是一个撰写合格commit message的工具,用于代替git commit 指令,而cz-conventional-changelog适配器提供conventional-changelog标准(约定式提交标准)。基于不同需求,也可以使用不同适配器。
npm install -g commitizen cz-conventional-changelogecho '{ "path": "cz-conventional-changelog" }' > ~/.czrc
安装完毕后,可直接使用git cz来取代git commit。
全局模式下,需要 ~/.czrc 配置文件, 为commitizen指定Adapter。
2、项目内安装commitlint & husky
commitlint负责用于对commit message进行格式校验,husky负责提供更易用的git hook。
use npm
npm i -D husky @commitlint/config-conventional @commitlint/cli
use yarn
yarn add husky @commitlint/config-conventional @commitlint/cli -D
commitlint只能做格式规范,无法触及内容。对于内容质量的把控只能靠我们自己。
3、添加相应配置
创建commitlint.config.js
# In the same path as package.jsonecho 'module.exports = {extends: ["@commitlint/config-conventional"]};' > ./commitlint.config.js
引入husky
# package.json...,"husky": {"hooks": {"commit-msg": "commitlint -e $GIT_PARAMS" }}
4、使用
执行git cz进入interactive模式,根据提示依次填写。
1.Select the type of change that you're committing 选择改动类型 ()2.What is the scope of this change (e.g. component or file name)? 填写改动范围 ()3.Write a short, imperative tense description of the change: 写一个精简的描述 ()4.Provide a longer description of the change: (press enter to skip) 对于改动写一段长描述 ()5.Are there any breaking changes? (y/n) 是破坏性修改吗?默认n ()6.Does this change affect any openreve issues? (y/n) 改动修复了哪个问题?默认n ()
生成的commit message格式如下:
():
填写完毕后,husky会调用commitlint对message进行格式校验,默认规定type及subject为必填项。
任何git commit指令的option都能用在 git cz指令上, 例如git cz -a
# Commit message规范在rrd-fe落地使用情况
针对团队目前使用的情况,我们讨论后拟定了commit message每一部分的填写规则。
1、type
type为必填项,用于指定commit的类型,约定了feat、fix两个主要type,以及docs、style、build、refactor、revert五个特殊type,其余type暂不使用。
# 主要typefeat: 增加新功能fix: 修复bug# 特殊typedocs: 只改动了文档相关的内容style: 不影响代码含义的改动,例如去掉空格、改变缩进、增删分号build: 构造工具的或者外部依赖的改动,例如webpack,npmrefactor: 代码重构时使用revert: 执行git revert打印的message# 暂不使用typetest: 添加测试或者修改现有测试perf: 提高性能的改动ci: 与CI(持续集成服务)有关的改动chore: 不修改src或者test的其余修改,例如构建过程或辅助工具的变动
当一次改动包括主要type与特殊type时,统一采用主要type。
2、scope
scope也为必填项,用于描述改动的范围,格式为项目名/模块名,例如:
node-pc/common rrd-h5/activity,而we-sdk不需指定模块名。如果一次commit修改多个模块,建议拆分成多次commit,以便更好追踪和维护。
3、body
body填写详细描述,主要描述改动之前的情况及修改动机,对于小的修改不作要求,但是重大需求、更新等必须添加body来作说明。
4、break changes
break changes指明是否产生了破坏性修改,涉及break changes的改动必须指明该项,类似版本升级、接口参数减少、接口删除、迁移等。
5、affect issues
affect issues指明是否影响了某个问题。例如我们使用jira时,我们在commit message中可以填写其影响的JIRA_ID,若要开启该功能需要先打通jira与gitlab。参考文档:docs.gitlab.com/ee/user/pro…
填写方式例如:
re #JIRA_IDfix #JIRA_ID
# 示例
完整的commit message示例
相应的git log
# 扩展阅读
conventional commits 必读 介绍约定式提交标准。
Angular规范 必读 介绍Angular标准每个部分该写什么、该怎么写。
@commitlint/config-conventional 必读 介绍commitlint的校验规则config-conventional,以及一些常见passes/fails情况。
- END -
# 热文推荐
为什么在密码问题上,char[]优先于String?
阿里的离职率真的是互联网大厂里最低的吗?
35岁腾讯员工被裁员感叹:北京一套房,存款700多万,失业好焦虑
喜欢文章,点个在看
eclipse git提交代码_来看看大厂的Git提交规范,千万别乱提交代码哦...相关推荐
- idea提交git差件_多人合作使用git,推送代码、和并分支
原文地址: 多人合作使用git,推送代码.和并分支 www.limuke.top 下面将会演示多人合作写项目使用git的教程:创建分支.推送代码.将自己的分支的代码和主分支合并. 下面是模仿两个人合 ...
- lstm代码_贼好理解,这个项目教你如何用百行代码搞定各类NLP模型
机器之心报道 参与:思源.贾伟 NLP 的研究,从词嵌入到 CNN,再到 RNN,再到 Attention,以及现在正红火的 Transformer,模型已有很多,代码库也成千上万.对于初学者如何把握 ...
- python分析人口出生率代码_身份证号码各位数字的含义以及计算校验位的python代码...
公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码. 其中前六位是地址码,通过百度百科我们很容易就 ...
- git 初始化git存储库_什么不保存到Git存储库中
git 初始化git存储库 You should not commit these four types of files into your Git repository. 您不应将这四种类型的文件 ...
- 入职开发很少写代码_如何简化开发人员入职:将开发环境作为代码
入职开发很少写代码 Imagine that only a decade ago system administrators deployed, configured, and maintained ...
- git安装步骤_详解linux安装git的方法步骤(超实用)
简介 Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理. Git 是 Linu ...
- y空间兑换代码_进行图像增广的15+种功能总结和Python代码实现
python代码可以自己扩充图像数据集. 无论我们喜欢Keras还是Pytorch,我们都可以使用丰富的资料库来有效地增广我们的图像. 但是如果遇到特殊情况: 我们的数据集结构复杂(例如3个输入图 ...
- 查看exe代码_【安全风险通告】Windows Type 1字体解析远程代码执行漏洞安全风险通告...
微软官方今天发布了编号为ADV200006的安全通告,其中包含两枚Adobe字体管理库相关的严重远程代码执行漏洞,其中一枚漏洞为奇安信代码安全实验室提交,公告中指出这两枚漏洞已遭在野利用. 鉴于漏洞危 ...
- lsd 特征点匹配代码_线特征LSD and 描述子LBD(一)(示例代码)
最近在看有关特征提取的线特征,暑期就看了相关的论文:<基于点线综合特征的双目视觉SLAM方法_谢晓佳>,最近呢,把里面有关线特征提取LSD和描述子LBD的代码跑了一遍,记录如下: [1]L ...
最新文章
- 通过实例学习如何使用telerik:RadListView控件
- 设计模式C#描述之——简单工厂模式、抽象工厂模式、单例与多例模式
- python debug【】
- fieldset 在td中怎样设置高度_TD-LOFT夹层,是如何做到超薄的?
- webpack最简单的入门教程里bundle.js之运行单步调试的原理解析
- count 数字计数(bzoj 1833)
- php如何打开数据库,php数据库怎么打开
- 团队作业—预则立他山之石
- 批量修改栏目名_Endnote中英文混排批量修改小技巧
- 单CPU处理1s视频仅需37ms、GPU仅需10ms,谷歌提出TVN视频架构
- mysql的binlog意义_带你解析MySQL binlog
- 第一章 SQL命令 ALTER TABLE(一)
- 3V升压5V芯片,3V升压5V电路图
- vbs整人代码大集合 多年的代码收集
- Bugzilla的安装和配置
- worldpress小工具自定义html,教程 | 用 worldpress 搭建自己的博客 – 小白教程
- (转)日本語を輸入について
- 2018年上半年综合素质作文
- 自学计算机图形学OpenGL(五)DDA数值微分线段法
- 有什么好用的测量仪器尺子?手机也能其妙满足
热门文章
- 微前端概述(Micro Frontends) 以及相比单体应用,微前端能带来什么好处
- SAP CRM Fiori 应用的 offline 离线支持开发笔记
- TypeScript输入参数的默认值一例,以及对应生成的JavaScript代码分析
- rxjs里scan operators的用法
- SAP Spartacus routing parameter mapping介绍
- SAP UI5 Web Component里如何自定义CSS style
- UI5_INFO_FETCH_FROM_DB
- SAP UI5 attachment control relative url binding
- windows环境里React-Native运行失败的原因之一,缺少依赖
- VError - Found 0 matching services的根源分析