1. 前言

目前大部分公司都在使用Git作为版本控制,每个程序员每天都要进行代码的提交。很多开发者也包括我自己,有时候赶时间或者图省事,就这么提交:

git commit -m "修改bug,优化代码"

过了一段,突然去查找一个具体的提交你会发现不是特别好找。因此我们需要规范我们的代码提交来避免这种情况。同时良好的提交规范也有助于我们生成清晰的ChangeLog,更利于同事之间的协作。

如果你想成为知名开源项目的贡献者更要规范自己的代码提交。

2. Git提交规范

目前业内做的比较好的,比较具有参考价值的就是知名前端框架AngularJS的提交规范。我们先来看一个例子:

对应的格式:

<type>[optional scope]: <description>
# 空行
[optional body]
# 空行
[optional footer]

更严格的项目可能提交要求使用英文描述,特别是国际化的开源项目。

根据上面这个例子我们来了解一下这个业界比较认可的Git提交规范。

type

refactor 表示本次提交的是重构代码,也就是它是一个提交的类型type,除了refactor还有:

  • feat 新功能,顾名思义就是新需求的实现。
  • fix 修复,就是对bug的修复。
  • docs 文档,主要用来描述文档的变更。
  • style 主要是代码风格相关的提交,比如格式化等。
  • refactor 重构代码,对已有功能的重构,但是区别于bugfix。
  • test 测试相关的提交,不太常用。
  • chore 构建过程或辅助工具的变动,不太常用,比如之前用Maven,后面换成了Gradle。

每次提交声明提交的type是必须的,它让本次提交的作用一目了然。

scope(可选)

用来表明本次提交影响的范围,方便快速定位。你可以写明影响的是哪个模块(通常是模块名称)或者是哪个层(数据层、服务层、还是视图层)。

subject

就是上面的修改版权信息,是对本次提交的简短描述概括。就像胖哥写文章要起一个标题一样,不要过长。

body(可选)

就是比较详细描述本次提交涉及的条目,罗列代码功能,这里胖哥习惯用markdown的列表语法,也就是用中划线换行隔开条目。当然body不是必选的,如果subject能够描述清楚的话。

foot(可选)

描述与本次提交相关联的break changeissue

break change

指明本次提交是否产生了破坏性修改,类似版本升级、接口参数减少、接口删除、迁移等。如果产生了上述的影响强烈建议在提交信息中写明break change,有利于出问题时快速定位,回滚,复盘。

issue

如果发现项目有bug、或者有优化的建议、甚至新增一个任务,就可以利用issue给项目提交一个任务。

issue不是一些Git平台的专属功能,JIRA等平台也有类似功能,它们的作用大同小异,都可以很好地反应项目的成长状况和参与度。那么在Git提交时,我们可以在foot区域关联本次提交涉及的issue

# 涉及
issues #F12YC,#F45JW
# 关闭
Closes #F12YC

这里没有固定格式,不过尽量去参考一些知名项目去做。

3. 工具安利

说了这么多,相信你已经对Git提交的规范有所了解了。这里推荐一些有用的工具来帮助你将这些规范落实到位。在Intellij IDEA的插件市场有很多Git Commit Message模板插件,可以可视化的实现这些规范。

你可以去插件市场搜索获取相关的插件。好了今天的分享就到这里,多多关注:码农小胖哥,学习更多有用的编程实用技巧。

关注公众号:Felordcn 获取更多资讯

个人博客:https://felord.cn

开发中的你的Git提交规范吗?的更多相关文章

  1. git 提交规范

    git 提交规范 前言 无规矩不成方圆,编程也一样. 如果你有一个项目,从始至终都是自己写,那么你想怎么写都可以,没有人可以干预你.可是如果在团队协作中,大家都张扬个性,那么代码将会是一团糟,好好的项 ...

  2. 前端规范之Git提交规范(Commitizen)

    代码规范是软件开发领域经久不衰的话题,几乎所有工程师在开发过程中都会遇到或思考过这一问题.而随着前端应用的大型化和复杂化,越来越多的前端团队也开始重视代码规范.同样,前段时间,笔者所在的团队也开展了一 ...

  3. 项目工程化之git提交规范以及 CHANGELOG生成

    事先声明,本文是参考了其他大神的博客之后自己尝试的记录,具体可以参考如下 链接 先说说git 提交规范把,这里基本都是这个工具 cz-customizable 1,安装 npm install cz- ...

  4. 利用shell脚本生成CHANGELOG.md(包含git提交规范)

    前言 我们经常看到github上面有很多CHANGELOG.MD包含版本的更新信息,如果我们的git提交能遵循一定的规范,那么使用gitlog就能很方便的生成它 生成结果  shell脚本 http ...

  5. 老鸟都应该注意的git 提交规范

    不知道大家有没有看过自己项目的git 提交信息-----我看过好多次 ,不忍直视  然后提醒一起的小伙伴 :大家规范点 信息要详细, 过段时间再看下 ,还是一样. 相信很多猿都有这样的感受,对于垃圾的 ...

  6. 你可能会忽略的 Git 提交规范

    一.为什么需要规范? 无规矩不成方圆,编程也一样. 如果你有一个项目,从始至终都是自己写,那么你想怎么写都可以,没有人可以干预你.可是如果在团队协作中,大家都张扬个性,那么代码将会是一团糟,好好的项目 ...

  7. 关于Git提交规范

    自古至今,无规矩不成方圆. Git提交也有其规范,业内做的比较好的,比较具有参考价值的就是Angular的提交. Angular提交规范: <type>(<scope>): & ...

  8. Git提交规范

    Commit message 的格式 每次提交,Commit message 都包括三个部分:Header,Body 和 Footer. <type>(<scope>): &l ...

  9. Git提交代码规范 而且规范的Git提交历史,还可以直接生成项目发版的CHANGELOG(semantic-release)

    Git提交代码规范 - 木之子梦之蝶 - 博客园 https://www.cnblogs.com/liumengdie/p/7885210.html Commit message 的格式 Git 每次 ...

随机推荐

  1. Spark 源码浅读-SparkSubmit

    Spark 源码浅读-任务提交SparkSubmit main方法 main方法主要用于初始化日志,然后接着调用doSubmit方法. override def main(args: Array[St ...

  2. js下 Day09、事件(二)

    一.事件流 事件流描述的是从页面中接收事件的顺序,目前主要有三个模型: #1. 事件冒泡: 事件开始时由最具体的元素接收,然后逐级向上传播到较为不具体的元素

  3. 抖音爬虫教程,python爬虫采集反爬策略

    一.爬虫与反爬简介 爬虫就是我们利用某种程序代替人工批量读取.获取网站上的资料信息.而反爬则是跟爬虫的对立面,是竭尽全力阻止非人为的采集网站信息,二者相生相克,水火不容,到目前为止大部分的网站都还是可 ...

  4. Appium App UI 自动化测试理论知识

    (一)App自动化测试背景 随着移动终端的普及,手机应用越来越多,也越来越重要.App的回归测试用例数量越来越多,全量回归也越来越消耗时间.另外移动端碎片化严重(碎片化:兼容性测试,手机品牌多样.An ...

  5. 安装篇七:配置 Nginx 使其支持 PHP 应用

    配置说明(NGINX-PHP) (让nginx  php(中间件)之间建立关系):nginx--php建立关系---fastcgi---cgi 第一个里程: 编写nginx虚拟主机配置文件 第二个里程 ...

  6. 2.Redis info命令详解

    命令 127.0.0.1:6379> info [server|clients|memory|stats|...] # Server redis_version:5.0.4 #redis版本 r ...

  7. ConcurrentHashMap线程安全吗?

    前言 没啥深入实践的理论系同学,在使用并发工具时,总是认为把HashMap改为ConcurrentHashMap,就完美解决并发了呀.或者使用写时复制的CopyOnWriteArrayList,性能更 ...

  8. Hello Python!用 Python 写一个抓取 CSDN 博客文章的简单爬虫

    网络上一提到 Python,总会有一些不知道是黑还是粉的人大喊着:Python 是世界上最好的语言.最近利用业余时间体验了下 Python 语言,并写了个爬虫爬取我 csdn 上关注的几个大神的博客, ...

  9. 为什么spring 被@Repository注解标识注入后是代理类

    背景 今天发现一个奇怪的问题,有一个类是用的@Repository注解标识注入的,并且这个类并没有配置任何带代理和aop配置.但是得到的这个类不是一个原生类,而是一个代理类,如果换成了Componen ...

  10. Mac电脑jsp连接mysql

    四个步骤教你如何用jsp代码连接mysql 第一步:下载jdbc驱动 进入mysql官网:https://dev.mysql.com/downloads/connector/ 找到Connect/J ...