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.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

拌合楼管理系统(八) c#海康威视摄像头车牌识别

前言: c#调用海康威视SDK实现车牌识别 原本以为海康威视sdk的Demo里面没有车牌识别的实例,后来发现自己肤浅了,官方是有提供的,只是车牌识别是通过安防布警的方式实现的.程序主动监听,触发告警后获取到车牌信息. 一、接口调用的流程&#xff1a; 首先初始化sdk -> 开…

袁志佳:前端全栈工程师精英班

教程介绍 本套课程涵盖大前端的全部领域&#xff0c;并对传统的Web前端全栈深入教学。如利用前端知识开发 AI、VR、AR、iOS、Android、PC、Server、智能硬件。 同时我们将核心打造 JavaScript语言新发展、Vue源码分析、前端持续集成方案汇总、MV*框架深度分析 、前端图形学、N…

亚稳态及其解决办法

异步电路 亚稳态 亚稳态亚稳态的产生原因什么是同步异步信号怎么消除亚稳态 亚稳态 在数字电路中&#xff0c;每一位数据不是1&#xff08;高电平&#xff09;就是0&#xff08;低电平&#xff09;。当然对于具体的电路来说&#xff0c;并非1&#xff08;高电平&#xff09;就是…

elementary OS7 Ubuntu 22.04中硬盘挂载报错

elementary OS7 Ubuntu 22.04中硬盘挂载报错 背景目标思路解决方法 背景 上周末安装elementaryos7的过程中将windows10的引导文件搞丢了&#xff0c;这两天准备修复一下&#xff0c;保险期间将固态硬盘上的文件备份到移动硬盘上&#xff0c;备份过程中出现报错的问题&#xff…

2024常用Web支付开发讲解教程

课程介绍 本教程为web支付开发&#xff0c;讲解了最常用的两钟支付&#xff1a;支付宝支付和微信支付&#xff0c;服务器配置和API对接&#xff0c;学完本课程可以学会微信支付、和支付宝支付开发。 学习资料 链接&#xff1a;https://pan.baidu.com/s/19WarLP2dO4dFvNbIHLU…

C++类的6个默认成员函数(构造)

C类和对象基础-CSDN博客https://blog.csdn.net/lh11223326/article/details/136834917?spm1001.2014.3001.5501 目录 1.构造函数 概念 特性 2.析构函数 概念 特性 3.拷贝构造函数 概念 特征 4.赋值运算符重载&#xff08;构造实现&#xff09; 运算符重载 赋值运算…

【常见BUG系列】Java 编程中的 NoSuchFieldError 异常:原因与解决方法

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

云原生(五)、Docker-Swarm集群

基础环境说明 1、环境准备 1、启动4台服务器&#xff08;在同一个网段内&#xff09;。 2、重命名4台服务器&#xff0c;方便区分。 hostnamectl set-hostname swarm1 reboot安装docker。参考文章&#xff1a;云原生&#xff08;二&#xff09;、Docker基础 2、DockerSwarm…

Autosar Crypto Interface学习笔记

文章目录 前言Functional specificationError classificationError detection API specificationType DefinitionsFunction definitionsGeneral APICryIf_InitCryIf_GetVersionInfo Job Processing InterfaceCryIf_ProcessJobDispatch Key IDs匹配KeyId Job Cancellation Inter…

springcloud-Nacos 更强大的注册中心组件

Nacos 实际上从设计思想来说 Eureka 和 nacos 是一样的。 后者是Alibaba推出的 一款更强大 功能更丰富的注册中心 你可以理解为Eureka的高配版 技多不压身既然了解了 Eureka, nacos也来学习一下吧&#xff01; 安装 首先nacos不像eureka 直接pom里面引个依赖就搞定了&#…

odoo17开发教程(17):美化UI界面

从业务角度来看&#xff0c;我们的房地产模块现在很有意义。我们创建了特定的视图&#xff0c;添加了几个操作按钮和约束条件。不过&#xff0c;我们的用户界面还有些粗糙。我们希望在列表视图中添加一些颜色&#xff0c;并使一些字段和按钮有条件地消失。例如&#xff0c;&quo…

Webman全局异常捕获处理

最近在使用webman这个框架做项目开发&#xff0c;涉及到需要统一处理异常捕获。由于官网给的并不详细&#xff0c;于是自己实现了一下全局异常处理类。 一、配置效果 例如&#xff1a;我要在项目中统一返回json 格式数据&#xff0c;并不想在业务层写try,catch逻辑。 或者在业务…

从产品组装和维护/维修的角度来看,基于增强现实的指导:关于挑战和机遇的最新综述

作者&#xff1a; 1. M. Eswaran 2. Anil Kumar Gulivindala 3. M.V.A.Raju Bahubalendruni 关于本文 •分析了增强现实在装配和维护/维修中的作用。 •讨论了AR辅助制造系统的软件和硬件元素。 •讨论了AR跟踪和配准技术面临的挑战。 •讨论了AR辅助制造系统的未来…

使用插件将swagger文档转html或pdf

github上有maven开源插件swagger2markup将swagger文档转为.adoc格式的文档&#xff0c;另外一个maven开源插件asciidoctorj-pdf则可以将.adoc格式的文档转为html和pdf。由于GitHub访问不稳定&#xff0c;在gitee上有镜像项目。所以我就贴gitee上的项目地址了。 实现从swagger文…

【聊一聊】三种工厂模式的创建

三种工厂模式的创建 今天终于星期五了,最近由于碰上一个需求,中间涉及Oracle改国产数据库的改造,好家伙,差点没把我忙坏了 不过今天终于有空啦!~哈哈哈 这篇本应该是上周就结束的,但是拖到今天,我们就今天进行结束 (还有一件快乐的事情,就是我遇见自己喜欢的人啦!嘻嘻) 好啦!~话…

【数字图像处理matlab系列】数组索引

【数字图像处理matlab系列】数组索引 【先赞后看养成习惯】【求点赞+关注+收藏】 MATLAB 支持大量功能强大的索引方案,这些索引方案不仅简化了数组操作,而且提高了程序的运行效率。 1. 向量索引 维数为1xN的数组称为行向量。行向量中元素的存取是使用一维索引进行的。因此…

如何解决Layui后台接口返回数据,但是table.render不渲染表格数据的问题

我这边进行了pareData数据格式转换&#xff0c;response重新定义了layui的参数格式规范 接口正常返回了数据 但是就是不渲染&#xff0c;我这个郁闷啊&#xff01;&#xff01; 忽然&#xff0c;我把后台重新定义的layui规定的格式参数&#xff0c;有个参数名叫data&#xff0…

037—pandas 按指定列堆叠数据

前言 在数据分析中&#xff0c;我们经常需要对数据进行堆叠操作&#xff0c;但 Pandas 提供的 df.stack() 只能按默认索引进行操作&#xff0c;同时堆叠后的列名无法指定&#xff0c;本列我们就来解决这些问题。 读入数据 代码如下&#xff08;示例&#xff09;&#xff1a;…

关于php foreach函数和变量覆盖

foreach函数是PHP中用于遍历数组或对象的函数&#xff08;且仅用于数组的遍历&#xff09;。它允许循环遍历数组中的每个元素&#xff0c;并对每个元素执行相同的操作。foreach语句的基本语法如下&#xff1a; foreach ($array as $value) {//执行的操作 }在这个语法中&#x…

政安晨:【深度学习部署】—— TensorFlow Extended(TFX)介绍

政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras实战演绎机器学习 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff01; 前言 TensorFlow Extended&#xff08;TFX&a…