git基础-查看提交历史

查看提交历史

在创建了多个提交之后,或者如果克隆了一个具有现有提交历史的存储库,可能会想要回顾一下发生了什么。最基本和强大的工具就是 git log 命令。

运行下git log查看下输出状态

默认情况下,不带任何参数运行 git log 命令会以逆时间顺序列出该存储库中所做的提交;也就是说,最近的提交会先显示。正如所看到的,这个命令会列出每个提交及其 SHA-1 校验和、作者的姓名和电子邮件、编写日期以及提交消息。

git log 命令提供了大量丰富的选项,以便准确地显示所需要的信息。在这里,我们将展示一些最常用的选项。

其中一个更有帮助的选项是 -p 或 --patch,它显示每个提交引入的差异(补丁输出)。还可以限制显示的日志条目数量,比如使用 -2 只显示最近的两个条目。

这个选项显示相同的信息,但在每个条目后面直接跟着一个 diff。这对于代码审查或快速浏览协作者添加的一系列提交期间发生了什么非常有帮助。还可以使用一系列的摘要选项来使用 git log。例如,如果想要为每个提交看到一些简略的统计信息,你可以使用 --stat 选项:

如所见,--stat 选项在每个提交条目下打印了一个修改的文件列表,显示了有多少文件被修改以及这些文件中添加和删除了多少行。它还在最后放置了一个摘要信息。

另一个非常有用的选项是 --pretty。这个选项可以将日志输出格式更改为除默认格式之外的其他格式。有几个预定义的选项值可供使用。对于这个选项,oneline 值会将每个提交打印在单独的一行上,这在查看大量提交时非常有用。此外,short、full 和 fuller 值以大致相同的格式显示输出,但信息量更少或更多,分别如此:

最有趣的选项值是 format,它允许指定自己的日志输出格式。当生成用于机器解析的输出时,这是特别有用的——因为明确指定了格式,所以知道它不会随着 Git 的更新而改变。

git log --pretty=format 的一些更有用的格式说明符如下:

Specifier

Description of Output

%H

Commit hash

%h

Abbreviated commit hash

%T

Tree hash

%t

Abbreviated tree hash

%P

Parent hashes

%p

Abbreviated parent hashes

%an

Author name

%ae

Author email

%ad

Author date (format respects the --date=option)

%ar

Author date, relative

%cn

Committer name

%ce

Committer email

%cd

Committer date

%cr

Committer date, relative

%s

Subject

可能想知道作者(author)和提交者(committer)之间的区别是什么。作者是最初编写工作的人,而提交者是最后应用工作的人。所以,如果向一个项目提交一个补丁,然后核心成员之一应用了这个补丁,那么你和核心成员都会得到认可——你作为作者,核心成员作为提交者。我们稍后在分布式 Git 中会更详细地介绍这个区别。

oneline 和 format 选项值特别适用于另一个名为 --graph 的日志选项。该选项添加了一个漂亮的小ASCII图,显示了分支和合并历史:

随着我们在下一章中介绍分支和合并,这种类型的输出将变得更加有趣。

这只是 git log 的一些简单输出格式选项,还有许多其他选项。常见的 git log 选项列出了我们到目前为止已经介绍的选项,以及一些其他常用的格式选项,可能会对日志命令的输出产生影响。

Option

Description

-p

Show the patch introduced with each commit.

--stat

Show statistics for files modified in each commit.

--shortstat

Display only the changed/insertions/deletions line from the --stat command.

--name-only

Show the list of files modified after the commit information.

--name-status

Show the list of files affected with added/modified/deleted information as well.

--abbrev-commit

Show only the first few characters of the SHA-1 checksum instead of all 40.

--relative-date

Display the date in a relative format (for example, “2 weeks ago”) instead of using the full date format.

--graph

Display an ASCII graph of the branch and merge history beside the log output.

--pretty

Show commits in an alternate format. Option values include onelineshortfullfuller, and format (where you specify your own format).

--oneline

Shorthand for --pretty=oneline --abbrev-commit used together.

限制log输出

除了输出格式选项外,git log 还接受许多有用的限制选项;也就是说,这些选项允许只显示一部分提交。已经见过其中一种选项了——-2 选项,它只显示最近的两次提交。实际上,不太可能经常使用这个选项,因为 Git 默认会将所有输出通过一个分页器进行分页,所以一次只能看到一页的日志输出。

然而,时间限制选项,比如 --since 和 --until,非常有用。例如,下面的命令获取了在过去两周内进行的提交列表:

这个命令可以使用许多格式——可以指定一个特定的日期,比如 "2008-01-15",或者一个相对日期,比如 "2 years 1 day 3 minutes ago"。

还可以将列表过滤为符合某些搜索条件的提交。--author 选项允许你根据特定的作者进行过滤,--grep 选项则允许你在提交消息中搜索关键词。

说明:可以指定多个 --author 和 --grep 搜索条件的实例,这将限制提交输出为与任何 --author 模式和任何 --grep 模式匹配的提交;然而,添加 --all-match 选项将进一步限制输出,只显示与所有 --grep 模式匹配的提交。

另一个非常有帮助的过滤器是 -S 选项(俗称 Git 的“锤子”选项),它接受一个字符串,并仅显示更改了该字符串出现次数的提交。例如,如果想找到最后一次添加或移除对特定函数引用的提交,可以调用:

$ git log -S function_name

作为过滤器传递给 git log 的另一个非常有用的选项是路径。如果指定一个目录或文件名,可以将日志输出限制为引入了对这些文件的更改的提交。这通常是最后一个选项,并且通常在路径之前使用双破折号(--)进行分隔:

$ git log -- path/to/file

在用于限制 git log 输出的选项中,我们将列出这些以及其他一些常见的选项供参考。

Option

Description

-<n>

Show only the last n commits.

--since--after

Limit the commits to those made after the specified date.

--until--before

Limit the commits to those made before the specified date.

--author

Only show commits in which the author entry matches the specified string.

--committer

Only show commits in which the committer entry matches the specified string.

--grep

Only show commits with a commit message containing the string.

-S

Only show commits adding or removing code matching the string.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/562946.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 VMWare 安装 Android-x86 系统(小白版)

文章目录 VMWare 介绍Android 系统介绍概述最终效果前置步骤开始安装 VMWare 介绍 VMware Workstation是VMware公司开发的一款桌面虚拟化软件。它允许用户在一台物理计算机上同时运行多个操作系统&#xff0c;每个操作系统都在自己的虚拟机中运行。这使得用户可以在同一台计算…

区块链技术下的新篇章:DAPP与消费增值的深度融合

随着区块链技术的持续演进&#xff0c;去中心化应用&#xff08;DAPP&#xff09;正逐渐受到人们的瞩目。DAPP&#xff0c;这种在分布式网络上运行的应用&#xff0c;以其去中心化、安全可靠、透明公开的特性&#xff0c;为用户提供了更为便捷和安全的消费体验。近年来&#xf…

Linux 常用命令 1

Tips&#xff1a;终端热键ctrl shift 放大终端窗口的字体 ctrl - 缩小终端窗口的字体 注意区分大小写 查阅命令帮助信息&#xff1a; 1&#xff09;--help command –help(两个减号) 显示command命令的帮助信息 2&#xff09;man man command 查阅command命令的使…

PAT题解 --- 寻宝图

今天是PTA题库解法讲解的第十天&#xff0c;今天我们要讲解浪漫侧影&#xff0c;题目如下&#xff1a; 题解思路&#xff1a; 要解决这个问题&#xff0c;可以使用深度优先搜索&#xff08;DFS&#xff09;方法来遍历每一个陆地或宝藏格子&#xff0c;标记所有与之相连的格子…

MySQL表内容的增删查改

在前面几章的内容中我们学习了数据库的增删查改&#xff0c;表的增删查改&#xff0c;这一篇我们来学习一下对表中的内容做增删查改。 CRUD : Create(创建), Retrieve(读取)&#xff0c;Update(更新)&#xff0c;Delete&#xff08;删除&#xff09; 1.创建Create 我们先创建…

linux centos 安装jenkins,并构建spring boot项目

首先安装jenkins&#xff0c;使用war包安装&#xff0c;比较简单&#xff0c;注意看下载的版本需要的JDK版本&#xff0c;官网下载https://www.jenkins.io/download/ 把下载好的war包放到服务器上&#xff0c;然后运行&#xff0c;注意8080端口的放行 # 前台运行并指定端口 ja…

基于Matlab的眼底图像血管分割,Matlab实现

博主简介&#xff1a; 专注、专一于Matlab图像处理学习、交流&#xff0c;matlab图像代码代做/项目合作可以联系&#xff08;QQ:3249726188&#xff09; 个人主页&#xff1a;Matlab_ImagePro-CSDN博客 原则&#xff1a;代码均由本人编写完成&#xff0c;非中介&#xff0c;提供…

腾讯云GPU云服务器_并行计算_弹性计算_AI_深度学习

腾讯云GPU服务器是提供GPU算力的弹性计算服务&#xff0c;腾讯云GPU服务器具有超强的并行计算能力&#xff0c;可用于深度学习训练、科学计算、图形图像处理、视频编解码等场景&#xff0c;腾讯云百科txybk.com整理腾讯云GPU服务器租用价格表、GPU实例优势、GPU解决方案、GPU软…

【机器学习300问】47、如何计算AUC?

一、AUC是什么&#xff1f; &#xff08;1&#xff09;文绉绉的定义 AUCArea Under the Curve中文直译叫“曲线下面积”&#xff0c;AUC名字里面的Curve曲线指的就是ROC曲线&#xff0c;关于ROC曲线的相关知识我已经在之前的文章中详细说过了&#xff0c;有需要的友友可以点击…

深度学习,CRNN+CTC和Attention OCR你更青睐哪一种?

深度学习在OCR领域的应用已经取得了瞩目的成果&#xff0c;而选择合适的算法对于提升OCR的识别准确率至关重要。在众多算法中&#xff0c;CRNN和Attention OCR犹如两颗璀璨的明珠&#xff0c;备受瞩目。 CRNN&#xff0c;这位结合了卷积神经网络&#xff08;CNN&#xff09;和…

【Godot4.2】基础知识 - Godot中的2D向量

概述 在Godot中&#xff0c;乃至一切游戏编程中&#xff0c;你应该都躲不开向量。这是每一个初学者都应该知道和掌握的内容&#xff0c;否则你将很难理解和实现某些其实原理非常简单的东西。 估计很多刚入坑Godot的小伙伴和我一样&#xff0c;不一定是计算机专业或编程相关专…

Keepalive与idle监测及性能优化

Keepalive 与 idle监测 Keepalive&#xff08;保活&#xff09;: Keepalive 是一种机制&#xff0c;通常用于TCP/IP网络。它的目的是确保连接双方都知道对方仍然存在并且连接是活动的。这是通过定期发送控制消息&#xff08;称为keepalive消息&#xff09;实现的。如果在预定时…