侧边栏壁纸
  • 累计撰写 416 篇文章
  • 累计创建 65 个标签
  • 累计收到 145 条评论

目 录CONTENT

文章目录
Git

Git 基础 git log的扩展属性,以及常见commit 内容规范

Z同学
2022-04-07 / 0 评论 / 1 点赞 / 809 阅读 / 2,262 字
温馨提示:
本文最后更新于 2022-04-07,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

1.介绍

本篇主要介绍git log命令后,输出的日志内容。让大家能明白提交历史的内容,以及介绍一下常见的比较规范的commit提交中的日志记录写法。

2. git log 查看提交历史

当我们在使用Git进程多次提交之后,我们如果想回顾一下整个项目的提交历史,那么可以直接使用git log 命令进行查询。

示例:

image-20220407144540465

我们直接输入:git log 就会得到类似上面的结果。git会按照时间先后顺序列出所有的提交,最新提交的在最上面显示。

commit: 后面的内容是每次提交的SHA-1校验和。

Author :本次提交的作者和邮箱地址。

Date:提交的时间

最后的就是提交说明内容了,也就是我们所说的日志记录。

本次的commit提交内容的介绍。

如果你的记录过多,你会进入到git 的分页器中。退出分页器的方式很简单通过按键(Q)就可以关闭分页器了。

2.1 -p 或 --patch 显示每次提交的差异

我们常见的是在git log后面添加上-p 或--patch 它会显示每次commit提交时所引入的差异(也就是本次提交和仓库最新记录之间的差异)。整个结果会按照补丁的格式输出。

示例:

image-20220407145450123

然后会发现这个log 的输出内容会很多很杂。

因为它会显示log的基本信息以外,还会附带每次提交的变化。当我们进行代码审查,或快速浏览某个提交所带来的变化时,这个参数就非常有用了。

而我们常见的在GitHub上比较两次的更新:

image-20220407145856189

就是基于这个命令进行的。

2.2 --stat 查看每次提交的简略统计信息。

我们使用-p的时候显示的内容太详细了,而只需要知道修改了多少文件等那么就可以使用--stat进行统计了。示例如下:

image-20220407151325416

它在每次提交的下面,列出了所有被修改的文件,有多少文件被修改了以及被修改过的文件有哪些行被移除或添加。

并且在最后还进行有总结。

其中的+ 代表新增,- 代表删除

2.3 --pretty 使用不同的格式展示提交历史。

我们如果不想使用git的默认格式,git内置了其他的几种展示方式供我们选择,例如:

git log --pretty=oneline
git log --pretty=short
git log --pretty=full  //和默认git log 输出的一样
git log --pretty=fuller

image-20220407152303954

这种日志,适用于浏览大量提交记录时使用。

而我们如果想让输出的结果,按照我们指定的格式输出,那么可以使用format指令。示例:git log --pretty=format:"哈希值:%h - 作者:%an,修改时间:%ar 内容:%s "

image-20220407152903368

这种和我们在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链接等。
1

评论区