1.介绍
本篇主要介绍git log命令后,输出的日志内容。让大家能明白提交历史的内容,以及介绍一下常见的比较规范的commit提交中的日志记录写法。
2. git log 查看提交历史
当我们在使用Git进程多次提交之后,我们如果想回顾一下整个项目的提交历史,那么可以直接使用git log
命令进行查询。
示例:
我们直接输入:git log
就会得到类似上面的结果。git会按照时间先后顺序列出所有的提交,最新提交的在最上面显示。
commit: 后面的内容是每次提交的SHA-1校验和。
Author :本次提交的作者和邮箱地址。
Date:提交的时间
最后的就是提交说明内容了,也就是我们所说的日志记录。
本次的commit提交内容的介绍。
如果你的记录过多,你会进入到git 的分页器中。退出分页器的方式很简单通过按键(Q)就可以关闭分页器了。
2.1 -p 或 --patch 显示每次提交的差异
我们常见的是在git log后面添加上-p 或--patch 它会显示每次commit提交时所引入的差异(也就是本次提交和仓库最新记录之间的差异)。整个结果会按照补丁的格式输出。
示例:
然后会发现这个log 的输出内容会很多很杂。
因为它会显示log的基本信息以外,还会附带每次提交的变化。当我们进行代码审查,或快速浏览某个提交所带来的变化时,这个参数就非常有用了。
而我们常见的在GitHub上比较两次的更新:
就是基于这个命令进行的。
2.2 --stat 查看每次提交的简略统计信息。
我们使用-p
的时候显示的内容太详细了,而只需要知道修改了多少文件等那么就可以使用--stat进行统计了。示例如下:
它在每次提交的下面,列出了所有被修改的文件,有多少文件被修改了以及被修改过的文件有哪些行被移除或添加。
并且在最后还进行有总结。
其中的+
代表新增,-
代表删除
2.3 --pretty 使用不同的格式展示提交历史。
我们如果不想使用git的默认格式,git内置了其他的几种展示方式供我们选择,例如:
git log --pretty=oneline
git log --pretty=short
git log --pretty=full //和默认git log 输出的一样
git log --pretty=fuller
这种日志,适用于浏览大量提交记录时使用。
而我们如果想让输出的结果,按照我们指定的格式输出,那么可以使用format
指令。示例:git log --pretty=format:"哈希值:%h - 作者:%an,修改时间:%ar 内容:%s "
这种和我们在java开发中使用format格式化时间等原理和写法差不多。
只是它的关键字不一样,具体的关键字如下表:
关键字 | 说明 |
---|---|
%H | 提交的完整哈希值 |
%h | 提交的简写哈希值 |
%T | 树的完整哈希值 |
%t | 树的简写哈希值 |
%P | 父提交的完整哈希值 |
%p | 父提交的简写哈希值 |
%an | 作者 |
%ae | 电子邮件 |
%ad | 修订日期(可以使用--date=选项 定制日期显示格式) |
%ar | 修订日志(按照距今多久显示) |
%cn | 提交者名称 |
%ce | 提交者电子邮件 |
%cd | 提交日期 |
%cr | 提交日期(按照距今多久显示) |
%s | 提交说明(也就是commit的提交说明) |
通常情况下,提交者大部分就是作者。而在大项目或分布式管理的情况下,作者不一定是提交者。
3. 其他常见的log常用扩展属性
在上面只是介绍和学习了部分的属性配置,下面通过表格的方式进行一个汇总,方便进行查询对照。
选项 | 说明 |
---|---|
-p | 按照补丁格式显示每个提交引入的差异 |
--stat | 显示每次提交的修改统计信息 |
--shortstat | 只显示--stat中最后的行数修改,添加,移除统计 |
--name-only | 仅在提交信息后显示已修改的文件清单 |
--name-status | 显示新增,修改,删除的文件清单 |
--abbrev-commit | 仅显示SHA-1校验和所有40个字符中的前几个字符 |
--relative-date | 使用相对时间,而不是完整格式显示日期 |
--graph | 在日志旁以ASCll图形显示分支和合并历史 |
--pretty | 使用其他格式显示提交信息 |
--oneline | --pretty=oneline --abbrev-commit 合用的简写 |
--since, --after | 显示指定时间之后的提交(since和after这是两个不同的选项,两种都可以生效) |
-S | 匹配满足字符串的提交记录 |
-2 | 显示最近的第2条记录,(这个2可以是任何整数,是几就显示几条记录) |
--until, --before | 显示指定时间之前的提交(until 和before这是两个不同的选项,两种都可以生效) |
--author | 显示作者匹配指定字符串的提交 |
--committer | 显示提交者匹配指定字符串的提交 |
--grep | 显示提交说明中包含指定字符串的提交 |
4. 常见的commit 提交规范
我们常见的commit提交规范,指的是我们每次提交时的内容介绍的写法。该内容主要写法为:
标题行 :描述主要修改类型和内容
主题内容:描述为什么修改,做了什么样的改变,以及思路等等。
页脚注释:Breaking Changes 或 Closed Issues 等
常见类型为:
- type :commit的类型
- feat:新特性
- fix:修改问题(bug修复)
- refactor:代码重构
- docs:文档修改
- style:代码格式修改
- test:测试用例修改
- chore:其他修改,例如构建流程,依赖配置等。
- scope:本次修改影响范围,例如 route,component,utils,build等
- subject :修改内容的概述
- body:修改内容的详细描述
- footer:备注,例如修改后的bug链接等。
评论区