发布网友 发布时间:2022-05-12 18:17
共1个回答
热心网友 时间:2023-10-17 07:04
2.1 Commit message的格式化
每次提交,Commit message 都包括两个核心部分:标题 和 内容。
<类型>(可选): <主题>// 空一行<内容>
其中,标题 是必需的,内容无需过多描述的话,正文内容部分可以省略。
不管是哪一个部分,任何一行都不得超过72个字符(或100个字符)。这是为了避免自动换行影响美观。
2.1.1 标题
标题部分只有一行,包括字段:类型 和 主题。
标题*总字数在50个字符以内,以保证容易阅读。
e.g.
feat: init LearnGit.gitI got a wrong-style git commit, so I init a .git for learninghow to write a git commit message in right way.And the last line just write here for a simple test,it's useless acturally.
2.1.1.1 类型
类型 用于说明 commit 的类别,只允许使用下面7个标识。
init:项目初始化(用于项目初始化或其他某种行为的开始描述,不影响代码)
feat:新功能(feature)
fix:修补bug
docs:文档(documentation)
opt:优化和改善,比如弹窗进行确认提示等相关的,不会改动逻辑和具体功能等
style: 格式(不影响代码运行的变动)
refactor:重构(即不是新增功能,也不是修改bug的代码变动)
test:增加测试
other:用于难以分类的类别(不建议使用,但一些如删除不必要的文件,更新.ignore之类的可以使用)
(可选)类型后面可以加上括号,括号内填写主要变动的范围,比如按功能模块分,某模块;或按项目三层架构模式分,分数据层、控制层之类的。
#:表示模块
#student --> 表示 学生模块 (具体的模块开头字母小写,驼峰命名)
#ALL --> 表示 所有模块 (特殊含义如ALL表所有,MOST表大部分,用大写字母表示)
#MOST --> 表示 大部分模块
e.g. feat(#student): 新增添加学生的功能 —— 表示student模块新增功能,功能是添加学生
2.1.1.2 主题
主题 是 commit 目的的简短描述,不超过50个字符。
以动词开头,使用第一人称现在时,比如change,而不是changed或changes
第一个字母小写
结尾不加句号(.)
2.1.2 内容
内容部分是对本次 commit 的详细描述,可以分成多行,正文在 72 个字符处换行。
使用正文解释是什么(what)和为什么(why),而不是如何做,以及与以前行为的对比。
于是可以这样写:
balabala : balabala
what:
balabala
why:
balabala
2.2 格式化后Commit message的好处
2.2.1 提供更多的历史信息,方便快速浏览
直接使用git log你得到的是:
比如,下面的命令显示上次发布后的变动,每个commit占据一行。你只看行首,就知道某次 commit 的目的。
关于更多git log的输出格式,参考以下:
个性化你的 Git Log 的输出格式
2.2.2 可以过滤某些commit(比如文档改动),便于快速查找信息
比如,下面的命令仅仅显示feat类型的commit。
当然,你还可以这样:
关于更多过滤规则,参考以下:
5.3 Git log高级用法 过滤提交历史
e.g.