【Git 学习三】Git 查看提交历史,格式化输出统计信息

这篇具有很好参考价值的文章主要介绍了【Git 学习三】Git 查看提交历史,格式化输出统计信息。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前一节:【Git 学习二】Git 文件操作 - 文件添加、移除与重命名:


【Git 学习三】Git 查看提交历史,格式化输出统计信息

1. 基础命令

用于查看提交历史记录/提交日志的命令为

git log

在 git bash 输入此命令后, 会以时间逆序(最近的时间在前)列出各个提交历史,这些提交历史内容包括:

  • 提交的 SHA-1 校验和,
  • 作者名称,电子邮箱地址
  • 提交日期
  • 提交说明

大致如下:

$ git log
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Mon Mar 17 21:52:11 2008 -0700

    changed the version number

commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Sat Mar 15 16:40:33 2008 -0700

    removed unnecessary test

commit a11bef06a3f659402fe7563abf99ad00de2209e6
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Sat Mar 15 10:31:28 2008 -0700

    first commit

2. 统计信息

2.1 - 简略统计信息

简略修改统计信息

git log 命令后添加 --stat 选项,会显示哪些文件被修改,以及被修改的文件有多少行的移除 (deletions),多少行添加 (insertions)。

$ git log --stat
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Mon Mar 17 21:52:11 2008 -0700

    changed the version number

 Rakefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Sat Mar 15 16:40:33 2008 -0700

    removed unnecessary test

 lib/simplegit.rb | 5 -----
 1 file changed, 5 deletions(-)

commit a11bef06a3f659402fe7563abf99ad00de2209e6
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Sat Mar 15 10:31:28 2008 -0700

    first commit

 README           |  6 ++++++
 Rakefile         | 23 +++++++++++++++++++++++
 lib/simplegit.rb | 25 +++++++++++++++++++++++++
 3 files changed, 54 insertions(+)

单行历史信息

git log 命令加上 --oneline 选项,可以一行显示简略日志信息。

$ git log --oneline
ca82a6dff changed the version number
085bb3bcb removed unnecessary test
a11bef06a first commit

此命令相当于 --pretty=oneline--abbrev-commit 合用, --pretty 稍后介绍。

2.2 - 格式化统计信息

git log--pretty 选项可以使用自定义的格式展示提交历史记录,有一些内建子选项供选择
short , full , fuller , onelineformat

用法:

git log --pretty=<option>

举例:

git log --pretty=oneline

git log --pretty=onelinegit log --oneline 不同的地方为,前者显示完整的 SHA-1 哈希值校验和

format 用于自定义显示格式

$ git log --pretty=format:"%h - %an, %ar : %s"
ca82a6d - Scott Chacon, 6 years ago : changed the version number
085bb3b - Scott Chacon, 6 years ago : removed unnecessary test
a11bef0 - Scott Chacon, 6 years ago : first commit

%h 表示简写哈希值,%an 表示作者名称,%ar 表示提交历史的相对时间,%s 表示提交说明

–pretty=format 常用标识

选项 说明 速记
%H 提交的完整哈希值 commit hash
%h 提交的简写哈希值 -
%T 树的完整哈希值 tree hash
%t 树的简写哈希值 -
%P 父提交的完整哈希值 -
%p 父提交的简写哈希值 -
%an 作者名字 author name
%ae 作者的电子邮件地址 author email
%ad 作者修订日期 author date
%ar 作者修订日期,按多久以前的方式显示 author date, relative
%cn 提交者的名字 committer name
%ce 提交者的电子邮件地址 committer email
%cd 提交日期 committer date
%cr 提交日期,按多久以前的方式显示 committer date, relative
%s 提交说明 subject

作者 是实际的修改人,而 提交者 是将此工作合并到分支的人,如代码监视人/责任人,Git 的维护人员等。


2.3 - 过滤输出

如需要在源码中查看 Junio C Hamano 在 2008 年10 月期间除了合并提交之外的哪些提交 修改了 t/ 路径下的文件,可以使用:

$ git log --pretty="%h - %s" --author='Junio C Hamano' --since="2008-10-01" \
   --before="2008-11-01" --no-merges -- t/
5610e3b - Fix testcase failure when extended attributes are in use
acd3b9e - Enhance hold_lock_file_for_{update,append}() API
f563754 - demonstrate breakage of detached checkout with symbolic link HEAD
d1a43f2 - reset --hard/read-tree --reset -u: remove unmerged new paths
51a94af - Fix "checkout --track -b newbranch" on detached HEAD
b0ad11e - pull: allow "git pull origin $something:$current_branch" into an unborn branch

其他过滤输出选项

选项 说明
-<n> 仅显示最近的 n 条提交, n 在使用时用具体数字代替
--since , --after 仅显示指定时间之后的提交
--until , --before 仅显示指定时间之前的提交
--author 仅显示作者匹配指定字符串的提交
--committer 仅显示提交者匹配指定字符串的提交
--grep 仅显示提交说明中包含指定字符串的提交
-S 仅显示添加或删除内容匹配指定字符串的提交

其他使用举例

仅显示最近两条提交历史

git log -2

仅显示最近两周的提交历史

git log --since=2.weeks

仅显示 path/src/ 目录下的提交历史

git log -- path/src/

2.4 - 其他的选项

选项 说明 速记
-p 按补丁格式显示每个提交引入的差异 patch
--stat 显示每次提交的文件修改统计信息 statistics
--shortstat 只显示 --stat 中最后的行数修改添加移除统计 -
--name-only 仅在提交信息后显示已修改的文件清单 -
--name-status 显示新增、修改、删除的文件清单 -
--abbrev-commit 仅显示 SHA-1 校验和所有 40 个字符中的前几个字符 abbreviated
--relative-date 使用较短的相对时间而不是完整格式显示日期(比如“2 weeks ago” -
--graph 在日志旁以 ASCII 图形显示分支与合并历史 -
--pretty 使用其他格式显示历史提交信息。可用的选项包括 onelineshortfullfullerformat -
--oneline --pretty=oneline--abbrev-commit 合用的简写 -

参考链接:

Git 官方中文操作文档 - https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E6%9F%A5%E7%9C%8B%E6%8F%90%E4%BA%A4%E5%8E%86%E5%8F%B2文章来源地址https://www.toymoban.com/news/detail-736767.html

到了这里,关于【Git 学习三】Git 查看提交历史,格式化输出统计信息的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python基础—格式化输出

    一、旧式字符串格式化方法 %s、%d、%f等被称为占位符,%s对应字符串、%d对应整型、%f对应浮点型 %f -- 默认保留6位小数 %.Nf -- N为整数 %f -- 四舍五入 二、format方法 在字符串中写{},字符串外调用format方法,在format方法中传入值,按照一一对应的关系被写入对应的{} 作用为说明

    2024年02月08日
    浏览(34)
  • C++常用格式化输出转换

     在C语言中可以用printf以一定的格式打印字符,C++当然也可以。 输入输出及命名空间还不太了解的小伙伴可以看一看C++入门讲解第一篇。  在C++中,可以用流操作符(stream manipulators)控制数据的输出格式,这些流操作符定义在2个头文件( iomanip 和 ios )中,可以用输出运算

    2024年02月04日
    浏览(33)
  • fmt的格式化输入输出

    fmt 包是 Go 语言标准库中用于格式化输入和输出的包,它提供了丰富的函数来控制输出的格式,处理不同类型的数据,并且可以从输入源(如标准输入、文件)读取数据。下面将详细介绍 fmt 包的格式化输出和输入处理。 格式化输出 : fmt 包通过格式字符串来控制输出的格式

    2024年02月13日
    浏览(28)
  • Git教程学习:04 查看提交历史

    在提交了若干更新,又或者克隆了某个项目之后,我们想回顾下提交历史,可使用 git log 命令。 以\\\"simplegit\\\"项目作为示例。运行下面的命令获取项目: 不传入任何参数的默认情况下, git log 会按时间先后顺序列出所有的提交,最近的更新排在最上面。这个命令会列出每个提交

    2024年01月20日
    浏览(35)
  • Linux磁盘查看,使用(分区、格式化、挂载)

    目录 0、观察磁盘分区状态:lsblk、blkid、parted 0.1  lsblk列出系统上的所有磁盘列表 0.2  blkid列出设备的UUID等参数 0.3  parted列出磁盘的分区表类型与分区信息 1、磁盘分区:gdisk、fdisk 1.1  fdisk 2、磁盘格式化(创建文件系统):mkfs 3、文件系统挂载 3.1.1  手动挂载:mount 3.1.2

    2023年04月24日
    浏览(37)
  • AWK语言第二版 1.3 格式化输出

    前一节的 print 语句用于简单和快速的输出。如果对输出格式有更高要求,就要使用 printf 语句。本书后面的例子中,可以看到  printf 语句能生成几乎任意格式的输出,不过本节只会展示它的一小部分能力。细节可以参考附录 A.4.3。 对齐域 printf 语句的格式是 其中的 format 是一

    2024年02月10日
    浏览(24)
  • 格式化输入/输出(c语言超详细系列)(一)

    前言; Hello,大家好,我是心跳sy,今天我们主要讨论一下格式化输入/输出(一),包括printf,scanf的基本使用方法及注意事项、转换说明的简单理解以及转义序列的讲解,后续将持续带来对转换说明的深入研究以及输入缓冲的概念与文件相联系的知识,以及包括字符的输入输

    2024年02月13日
    浏览(28)
  • 关于使用JS获取当前时间并格式化输出

    (1)逐个提取并拼接字符串 (2)一步到位提取年月日时分秒(重点) 首先,提取数据到数据 然后,拼接数据格式化输出 (附上,过程剖析)

    2024年02月03日
    浏览(44)
  • Python 格式化输出:精确控制你的数据表示

          目录 旧式的 % 运算符(不推荐) str.format() 方法 位置和参数: 格式化数字: f-string 表达式和函数调用: 格式化数字: 格式规范的微调 (核心) 对齐字符串 填充字符 数字的零填充 数字的千位分隔符 格式化十六进制、八进制和二进制         在编程语

    2024年01月17日
    浏览(39)
  • Python(21)json.dumps()使用indent参数 格式化输出json数据格式

    json.dumps() 方法 将一个Python数据结构转换为JSON字符串 输出为 这样的格式一般都不优美,当数据很多的时候,看得就不是很直观方便。 可以使用 indent=4 参数来对json进行数据格式化输出,会根据数据格式缩进显示,读起来更加清晰 用法如下 输出为 json.dumps()方法,参数解释

    2024年02月08日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包