80%的程序员,不会写commit记录

news/2024/7/2 3:28:11

原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。任何不保留此声明的转载都是抄袭。

据说,80%的程序员,不会写commit记录。这个比例在无规范的小公司,比例会更高一些,可以看到这是一个多么普遍的问题。

程序员应该写出简洁明了的commit log,否则对别人和自己来说就是一种困扰。最近代码review多了,总有一股想笑的感觉。就像下图这满屏的ok,永远无法从中得知提交人的意图。

commit log将如何提交?都有哪些约定?其实是有答案的。对于Java程序员,尤其幸福。IDEA有一个非常好用的插件,可以用来辅助你进行代码提交,辅助你进行团队规范建设。接下来,我将带大家看一看它的使用方法。

安装插件

在IDEA的Marketplace中,搜索Git Commit Template,就可以安装这个插件。插件很小,很快就能下载下来。

正常从IDEA提交代码的时候。我们发现多了一个小按钮。

点击之后,将弹出一个窗口。让你去设计提交模板。

这么多信息,真的让人头晕。怪不得程序员们都不喜欢写提交记录。

其实,在插件的安装界面,就已经说明了这个提交记录的格式。

 <type>(<scope>): <subject>
 <BLANK LINE>
 <body>
 <BLANK LINE>
 <footer>

从描述中,可以肯容易的看到一个提交记录中,应该包含哪些东西。其中类型最多的,当然是提交类型。

提交类型Type

我们按照插件显示的顺序来说明一下。

  • feat 功能feature的意思,也是最常用的。当你的功能有变更的时候,都可以采用这种类型的type

  • fix 当然指的是bug修复

  • docs 更新了文档,或者更新了注释

  • style 代码格式调整,比如执行了format、更改了tab显示等

  • refactor 重构代码。指的是代码结构的调整,比如使用了一些设计模式重新组织了代码

  • perf 对项目或者模块进行了性能优化。比如一些jvm的参数改动,把stringbuffer改为stringbuilder等

  • test 这个简单,就是增加了单元测试和自动化相关的代码

  • build 影响编译的一些更改,比如更改了maven插件、增加了npm的过程等

  • ci 持续集成方面的更改。现在有些build系统喜欢把ci功能使用yml描述。如有这种更改,建议使用ci

  • chore 其他改动。比如一些注释修改或者文件清理。不影响src和test代码文件的,都可以放在这里

  • revert 回滚了一些前面的代码

除了这些预设的,团队还可以按照自己的需求,增加新的type。比如专门处理线上工单,就可以创造一个叫做ticket的类型。

范围scope

scope是范围的意思,主要指的是代码的影响面。scope并没有要求强制,但团队可以按照自己的理解进行设计。通常由技术维度和业务维度两种划分方式。比如按照技术分为:controllerdtoservicedao等。但因为一个功能提交,会涉及到多个scope(都不喜欢非常细粒度的提交),所以按照技术维度分的情况比较少。

按照业务模块进行划分,也是比较不错的选择。比如分为userorder等划分,可以很容易看出是影响用户模块还是order模块。

如果你实在不知道怎么填,那就留空。

其他

主题subject

这个体现的是总结概括能力,没得跑。一句话能够说明主要的提交是什么。subject也是众多git管理工具默认显示的一行。如果你写的标准,那么提交记录看起来就很漂亮很规整。

正文Body

主要填写详细的改动记录。我一般习惯列上1234,但如果你的subject写的非常好,正文可以直接弱化。但如果时间充裕,填写上重要记录的前因后果,需求背景,是一个好的习惯。

尾部Footer

添加一些额外的hook,比如提交记录之后,自动关闭jira的工单(JIRA和gitlab等是可以联动的)。在比如触发一些文档编译或者其他动作。

这部分自定义行也是比较强的。

Skip CI

最后还有一个skip CI选项。一般的ci工具,都可以设置提交代码时自动触发编译。但你可以告诉它忽略本次提交。这可能是因为你提前预判到了一些构建风险,或者就是不想编译。

End

最后,看一个典型的提交记录,有了工具的支持,我们的瞎扯也看得正经起来。

fix(order): 修复了1分钱买汽车的bug

商务反馈可以1分钱买汽车,目前已经卖出了100w量

Closes #2455

[skip ci]

其实,提交的核心是typesubject。一个用来表示它的提交类型,一个用来对提交进行概括性总结,写好了这两点,就能轻轻松松秒杀80%的程序员了。

有了这些基础,从commit log,自动生成change log,就变的非常的容易。配合持续集成平台,自动生成发版的变更记录,也是可行的,这也是为什么团队管理,都在一直强调git的提交规范。因为它确实非常有用。

作者简介:小姐姐味道  (xjjdog),一个不允许程序员走弯路的公众号。聚焦基础架构和Linux。十年架构,日百亿流量,与你探讨高并发世界,给你不一样的味道。我的个人微信xjjdog0,欢迎添加好友,进一步交流。

推荐阅读:

一图解千愁,jvm内存从来没有这么简单过!
失联的架构师,只留下一段脚本
架构师写的BUG,非比寻常
nginx工程师,需要上承天命,下召九幽
实力解剖一枚挖矿脚本,风骚操作亮瞎双眼
又一P1故障,锅比脸圆
传统企业的人才们,先别忙着跳“互联网”!
面试官很牛,逼我尿遁
又一批长事务,P0故障谁来背锅?
一天有24个小时?别开玩笑了!
《程序人生》杀机!
可怕的“浏览器指纹”,让你在互联网上,无处可藏
2w字长文,让你瞬间拥有「调用链」开发经验
996的乐趣,你是无法想象的
作为高级Java,你应该了解的Linux知识(非广告)
必看!java后端,亮剑诛仙(最全知识点)
学完这100多技术,能当架构师么?(非广告)
Linux上,最常用的一批命令解析(10年精选)
数百篇「原创」文章,助你完成技术「体系化」



http://www.niftyadmin.cn/n/3061229.html

相关文章

JSP+Servlet+JDBC开发案例——基于数据库的登录验证

<!--tijiao.jsp--> 转载于:https://www.cnblogs.com/liao-pxsoftware15/p/7896846.html

天齐锂业和赣锋锂业一季度业绩,可能挑战宁德时代

前两天宁德时代推迟几天发一季度财报&#xff0c;就带崩了大盘&#xff0c;可见大盘是多么脆弱&#xff0c;也可以说明大盘现阶段还很难稳住&#xff0c;要么没有一点利空以时间换空间&#xff0c;要么各种各样的利空不断刺激本就脆弱的大盘。更有可能是哪一个&#xff1f;马上…

Doug Lea大作AQS,掌握了可以横着走

❝推荐&#xff1a;以免费实战教学为目的开源系统bcMall&#xff0c;欢迎star&#xff1a;https://github.com/xjjdog/bcMall❞如果你想深入研究Java并发的话&#xff0c;那么AQS一定是绕不开的一块知识点&#xff0c;Java并发包很多的同步工具类底层都是基于AQS来实现的&#…

ASP.NET 2.0页面框架的几点新功能

新增的页面事件&#xff1a;在ASP.NET 2.0中&#xff0c;一个ASP.NET页面的生命周期主要为(红色字体表示ASP.NET 2.0新增加的阶段页面事件)&#xff1a;客户端请求页面—》预初始化(OnPreInit)—》初始化(OnInit)—》完成初始化(OnInitComplete)—》载入ViewState(LoadViewStat…

2021年,SQL注入死透了么?

原创&#xff1a;小姐姐味道&#xff08;微信公众号ID&#xff1a;xjjdog&#xff09;&#xff0c;欢迎分享&#xff0c;转载请保留出处。很长一段时间&#xff0c;我认为后端开发&#xff0c;在安全性方面最容易出问题的地方就在于SQL注入。通过 where 11这种魔幻的SQL写法&am…

锂矿是反弹的前锋

连续第二天&#xff0c;锂矿是锂电池的前锋&#xff0c;锂电池是大盘的中军。一根大阳改三观&#xff0c;可能不适用锂矿。但是一根大阳算反抽&#xff0c;两根大阳算反弹&#xff0c;不能说成立&#xff0c;应该是可以期待的。尤其是在创业板跌1.83个点&#xff0c;锂电龙头宁…

django结合apache部署

下载安装mod_wsgi 这里我的版本是mod_wsgi-3.4.tar.gz 在django的目录建立一个test.wsgi 这里我的目录是/var/www/html/Simplecmdb 建立一个test.wsgi 123456789def application(environ, start_response):status 200 OK output Hello World! response_headers [(Content-ty…

宁德时代一季报暴雷!天齐锂业和赣锋锂业一前一后保驾护航

天齐锂业一季度业绩爆了&#xff01;净利润33.28亿元&#xff0c;同比增长14倍。一季度利润是去年全年的1.6倍。天齐锂业2022年第一季度营收约52.5亿元&#xff0c;同比增加481%&#xff1b;归属于上市公司股东的净利润约33.2亿元&#xff0c;同比增加1442%&#xff1b;扣非净利…