前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >如何写git commit message

如何写git commit message

原创
作者头像
DamonLiu
修改于 2022-08-01 05:51:09
修改于 2022-08-01 05:51:09
43200
代码可运行
举报
文章被收录于专栏:知识技能知识技能
运行总次数:0
代码可运行

编码中少部分人写commit message仅仅是为了要提交代码,也有一些同学清楚commit message是为了记录提交的内容是什么,但是业务中还是有很多不知道是做了什么的commit message.

比如:

看到这个message,根本不知道是什么体验问题,即使代码编写人本人,过一段也会不记得,必须通过读代码才知道修改了什么体验问题

再看一个commit message

这个message显然就很清晰,不看代码也知道做什么,message指明了哪个页面,实现了什么功能调整

我们要首先明确写commit message的作用

  • 每一条提交记录的message能够提供更多的有效信息,方便我们快速浏览
  • 可以使用git log --grep <keyword>过滤掉某些commit,便于快速查找信息
  • 可以直接从commit生成Change log

实际业务场景中好的message可以帮助我们

快速找到某一次功能调整,方便不用读代码就能确认一些变更或者再次对相关功能做调整

帮助理解代码,通过message知道修改的代码的功能,Review代码可以更高效

那么我们要如何写好commit message

首先格式建议

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<type>(<scope>): <subject>
< 空一行 >
<body>
< 空一行 >
<footer>

body和footer可以不写

type用于说明commit的类别,具体如下

  • feat: 一个新的功能(feature);
  • fix:修复bug;
  • docs:修改文档,比如README.md、CHANGELOG.md等;
  • style: 修改代码的格式,不影响代码运行的变动,比如空格、格式化代码、补齐句末分号等等;
  • refactor: 代码的重构,没有新功能的添加以及bug修复的代码改动;
  • perf:优化代码以提高性能;
  • test:增加测试或优化改善现有的测试;
  • build:修改影响项目构建文件或外部依赖项,比如npm、gulp、webpack、broccoli等;
  • ci:修改CI配置文件和脚本;
  • chore:其他非src路径文件和测试文件的修改,比如.gitignore、.editorconfig等;
  • revert:代码回退;

subject为修改内容的简要描述

我自己通常只用subject把修改内容描述清楚,不再使用body和footer

在开发中尽量一件事一个commit,也就是一个commit message描述一件事,(实践中也存在多个小功能一起commit的情况,我通常用分号分割不同功能。多个小功能一个commit的缺点是无法把其中一个功能cherry pick到别的分支)。要保证commit的功能逻辑是完整的,其他同事拉下代码业务可以正确运行。

写commit时,脑袋中的思考,是看message的人完全不知道上下文,不能预设别人知道什么,可以简写。也不可以预设看一下代码文件就知道是哪一块的功能

前端的很多业务,可以从页面分类、页面再到具体修改了什么功能的描述方式描述

还有两种场景,可以单独提一个commit来描述

1. 逻辑调整很复杂,专门一个commit提交,把复杂的逻辑描述清楚,方便后续Review时理解

2. 特殊的业务设定,单独提一个commit,后续读到这一块代码不理解,看下commit message就明白了

那么这些情况为什么不用代码注释,在《代码整洁之道》这本书详细解释了,注释不会有人维护,代码改了、删了,注释还会在。而commit message,是在看到还存在的代码时,去查看message。

对于前端同学,写message时,可以思考为在什么地方实现了什么功能。

如果你是一个精简写message的Coder,可以先改变为把修改描述清楚。如果你写message已经很清晰,可以考虑精简凝练描述,简明扼要写清楚实现的功能。

再也不要出现无意义的message...

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
📚必知必会:写给前端同学常用的linux命令大全
linwu
2023/07/27
3400
常用Linux命令 (一)
第一行中,03:30:22是当前时间,up 39 min是系统运行的运行了多长时间,1 user指出了当前有几个用户登录到系统,load average指的是系统负载,这后面的三个值分别是1分钟,5分钟,15分钟的系统负载平均值。
用户2131907
2019/02/27
1.5K0
运维人员常用的Linux命令总结
cpu相关信息存放在/proc/cpuinfo目录中,所以要查看cpu信息就可以用以下命令:
职场亮哥
2020/10/10
1.7K0
运维人员常用的Linux命令总结
必须掌握的Linux命令
一台完整的计算机是由运算器、控制器、存储器、输入/输出等多种硬件设备共同组成的,而能让各种硬件设备各司其职且又能协同运行的东西就是系统内核。Linux 系统的内核负责完成对硬件资源的分配、调度等管理任务,对系统的正常运行起着十分重要的作用。
张旭博客
2022/12/27
1.5K0
必须掌握的Linux命令
谁再说不熟悉Linux命令,就把这个给他扔过去!
虽然平时大部分工作都是和Java相关的开发, 但是每天都会接触Linux系统, 尤其是使用了Mac之后, 每天都是工作在黑色背景的命令行环境中. 自己记忆力不好, 很多有用的Linux命令不能很好的记忆, 现在逐渐总结一下, 以便后续查看.
程序员小猿
2021/11/23
5420
linux命令小全
1. shell是内核与用户接口。主要有两种①Bourne Shell(SH),它是UNIX最初使用的Shell。它有一种扩展Bourne Again Shell,简称Bash。②C Shell(CSH),语法与C语言相似,比如它有一个扩展是Tcsh。
naget
2019/07/03
1.3K0
linux命令小全
Java后端线上问题排查常用命令收藏
swap space 是磁盘上的一块区域,当系统物理内存吃紧时,Linux 会将内存中不常访问的数据保存到 swap 上,这样系统就有更多的物理内存为各个进程服务,而当系统需要访问 swap 上存储的内容时,再将 swap 上的数据加载到内存中,这就是常说的换出和换入。交换空间可以在一定程度上缓解内存不足的情况,但是它需要读写磁盘数据,所以性能不是很高。
好好学java
2021/03/29
9650
Java后端线上问题排查常用命令收藏
Linux-学习1
​ echo命令用于在终端输出字符串或变量,格式”echo [字符串|$变量]”
doper
2022/08/23
6200
Java后端线上问题排查常用命令
swap space 是磁盘上的一块区域,当系统物理内存吃紧时,Linux 会将内存中不常访问的数据保存到 swap 上,这样系统就有更多的物理内存为各个进程服务,而当系统需要访问 swap 上存储的内容时,再将 swap 上的数据加载到内存中,这就是常说的换出和换入。交换空间可以在一定程度上缓解内存不足的情况,但是它需要读写磁盘数据,所以性能不是很高。
程序狗
2021/12/21
7320
Linux 常用命令(二)
Linux是一套免费使用和自由传播的类Unix操作系统(主要用在服务器上),接下来详细的介绍一下linux的一些知识。
小徐
2018/09/21
2.3K0
Linux 常用命令(二)
网工人必须掌握的Linux命令
作为一个Linux运维人员,主要就是对Linux服务器的性能做一些优化,本篇博文仅仅介绍如何性能检测常用的指令!
网络技术联盟站
2021/02/22
9960
Linux 学习笔记之超详细基础linux命令 Part 13
---------------------------------接Part 12------------------------------
授客
2019/09/11
7440
收藏!1000+个常用的Linux命令
不管你是从事开发还是运维工作,都要懂Linux基本命令,Linux命令是Linux系统正常运行的核心。
程序员小猿
2021/01/19
1.6K0
程序员应该掌握的一些 Linux 命令
作为一名后端开发,跟服务器的交流必不可少,刚好最近跟服务器打交道比较多,所以就汇总整理一下 Linux 下那些程序员经常需要使用的命令,掌握这些命令基本上可以在 Linux 系统里面横着走了(我明显是说大话了)
phoenix.xiao
2021/06/29
5980
新手需知的 Linux 基础命令
按 Ctrl+X 退出编辑,如果你修改了文件,会询问你是否需要保存修改。输入Y确认保存,输入N不保存,按Ctrl+C取消返回。
py3study
2020/01/06
7730
linux命令大全(手册)_Linux order命令
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/172230.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/25
25.9K0
linux命令大全(手册)_Linux order命令
SecureCRT 命令行备注「建议收藏」
Non-authoritative answer: Name: a.kaixin001.com Addresses:
全栈程序员站长
2022/11/01
1.2K0
Java程序员最常用的Linux命令
大家都知道,Linux系统提供了非常多非常多的命令或工具,这些命令都各有所长,都是系统需要的。但我们精力有限,要掌握全部的命令不太现实,所以只需要掌握其中部分常用的命令即可。这里,我就从一个Java程序员的角度,总结出我常用的一些Linxu命令,供大家参考。 文件目录基本操作 ls 命令用来显示目标列表,在Linux中是使用率较高的命令。ls命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件。 常用选项: ls(选项)(参数) -a 显示所有档案及目录(ls默认不会列出隐藏文件); -l 所有输出信
精讲java
2018/07/05
1.4K0
Linux常用命令速查表
常用命令 查看内存使用情况 free -h 设置别名 alias freak="free -h" 查看命令在哪个路径 which free 查看命令类型,如果是可执行文件,会打印出文件的路径 type pwd 查看当前shell类型 echo $SHELL 查看CPU型号 uname -m 查看ls命令的帮助信息 info ls 查看历史命令 history 显示所有环境变量 env 当前时间 date 休眠300秒 sleep 300 硬件 显示系统信息 uname -a 查看所有硬盘的使
憧憬博客
2020/07/21
6980
LInux 命令大全
开关机 reboot:重启 shutdown -h 0 或者init 0 :关机 halt:关机 poweroff:关机 文件的操作 ll:显示文件夹详细信息 ls:显示文件目录 mkdir fileName:创建目录 mkdir -p fileName/fileName:目录 cd filename:切换目录 rmdir fileName/fileName:删除目录 rm -rf fileName:强制删除 touch fileName:创建文件 cp fileName1 fileName2:复制文件
Jacob丶
2020/08/05
3.2K0
相关推荐
📚必知必会:写给前端同学常用的linux命令大全
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文