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.mzph.cn/news/766714.shtml

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

相关文章

【工具】cassetteai — 制作音乐就像现在写提示一样简单

Cassette 是一种人工智能驱动的音乐创作工具,使各种技能水平的用户都可以根据自己的特定需求和偏好生成高质量、免版税的音乐曲目。它基于基于潜在扩散 (LDM) 的机器学习模型,可以使用用户提供的文本描述来想象节拍。它具有易于使用的界面,用户可以输入各种参数,例如所需的…

AGV|机器人导航识别二维码视觉传感器TDCS-0100与上位机PLC联机实例说明

目前二维码视觉导航的AGV出货量非常大&#xff0c;几乎都是仓储型AGV使用的导航方式。在地面或者天花板等位置标贴二维码作为标记点&#xff0c;通过扫描读取二维码信息和二维码相对相机的角度来确定当前位置。 本文重点介绍AGV|机器人导航识别二维码视觉传感器TDCS-0100与上位…

unity学习(68)——相机/模型的旋转/位置计算

这个比想象中要难&#xff0c;而且需要自己写。 1.相机可以转xy两个位置&#xff0c;可以点头和转圈。注意这里有一个if判断&#xff08;后面返回来发现了这些问题&#xff09; 2.角色不能点头&#xff0c;只能转圈。 难得是移动方向&#xff0c;因为移动方向(位置)和转向是相…

在Sequence中缓存Niagara粒子轨道

当Sequence中粒子特效较多时&#xff0c;播放检查起来较为麻烦&#xff0c;而使用Niagara缓存功能可将粒子特效方便的缓存起来&#xff0c;并且还可以更改播放速度与正反播放方向&#xff0c;便于修改。 1.使用Niagara缓存需要先在插件里打开NiagaraSimCaching 2.创建一个常…

web前端之行为验证码、不同设备和屏幕尺寸呈现不同大小、元素宽度根据视口宽度进行调整、元素或图片裁剪、图片验证码

MENU 前言版本一(htmlJScss)版本二(htmlJScsscanvas) 前言 1、版本一的样式比较齐全&#xff1b; 2、版本二的JS逻辑和功能效果比较完善&#xff0c;且是别人的代码&#xff0c;后续会对样式进行完善。[Gitee | 哔哩哔哩]&#xff1b; 3、两个版本各有千秋&#xff0c;主要学习…

Kafka系列之:Connect 中的错误报告

Kafka系列之:Connect 中的错误报告 Kafka Connect 提供错误报告来处理各个处理阶段遇到的错误。默认情况下,转换期间或转换中遇到的任何错误都会导致连接器失败。每个连接器配置还可以通过跳过此类错误、选择性地将每个错误以及失败操作的详细信息和有问题的记录(具有各种详…

CRC计算流程详解和FPGA实现

一、概念 CRC校验&#xff0c;中文翻译过来是&#xff1a;循环冗余校验&#xff0c;英文全称是&#xff1a;Cyclic Redundancy Check。是一种通过对数据产生固定位数的校验码&#xff0c;以检验数据是否存在错误的技术。 其主要特点是检错能力强、开销小&#xff0c;易于电路实…

政安晨:【深度学习实践】【使用 TensorFlow 和 Keras 为结构化数据构建和训练神经网络】(二)—— 深度神经网络

政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras实战演绎 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff01; 概述 深度神经网络&#xff08;Deep Neural Network…

.MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复

导言&#xff1a; 近期&#xff0c;网络安全领域出现了名为.MyFilewaifu.club.wis、[[backupwaifu.club]].wis 、.[[Rastairmail.cc]].wis的新型勒索病毒&#xff0c;该病毒以其高度隐蔽性和破坏性引起了广泛关注。本文将对这种病毒进行深度解析&#xff0c;并提供具体的应对策…

SQLiteC/C++接口详细介绍sqlite3_stmt类(六)

返回&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍sqlite3_stmt类&#xff08;五&#xff09; 下一篇&#xff1a; SQLiteC/C接口详细介绍sqlite3_stmt类&#xff08;七&#xff09; 17. sqlite3_clear_bindings函数 sqlite3_clear_bindings函…

.NET Core 将实体类转换为 SQL(ORM 映射)

一、环境说明 PostgreSQL 数据库Npgsql 数据库连接库SqlSugar ORM 框架 二、映射流程 1、创建数据库&#xff1a; 检查指定数据库是否存在&#xff0c;如果不存在则创建数据库。 2、初始化 SqlSugar 实例&#xff1a; 使用 SqlSugarClient 初始化数据库连接配置。 3、筛…

Day44:WEB攻防-PHP应用SQL盲注布尔回显延时判断报错处理增删改查方式

目录 PHP-MYSQL-SQL操作-增删改查 PHP-MYSQL-注入函数-布尔&报错&延迟 基于布尔的SQL盲注-逻辑判断(需要有回显,没回显搞不了)跟union需要的条件差不多 基于时间的SQL盲注-延时判断(不需要任何回显) 基于报错的SQL盲注-报错回显(需要报错回显&#xff0c;没报错回…

【LabVIEW FPGA入门】FPGA 存储器(Memory)

可以使用内存项将数据存储在FPGA块内存中。内存项以2kb为倍数引用FPGA目标上的块内存。每个内存项引用一个单独的地址或地址块&#xff0c;您可以使用内存项访问FPGA上的所有可用内存。如果需要随机访问存储的数据&#xff0c;请使用内存项。 内存项不消耗FPGA上的逻辑资源&…

leetcode 2671

leetcode 2671 题目 例子 思路1 使用哈希&#xff0c; unordered_map 是基于hash 实现的key,val 存储。 代码1 class FrequencyTracker {unordered_map<int, int>m;public:FrequencyTracker() { }void add(int number) {if(m.find(number) m.end()){m.insert({num…

架构设计常用到的10种设计模

设计模式是软件设计中常用的解决方案&#xff0c;可以帮助解决编程中遇到的一些常见问题。常用的设计模式大致可以分为三大类&#xff1a;创建型、结构型和行为型。这里列举的10种设计模式是从这三大类中挑选出来的&#xff0c;每一种都有其独特的应用场景&#xff1a; 创建型…

java数据库编程常见面试题

序号问题详细答案24请你谈一下内联接,外联接区别&#xff1f;内连接是保证两个表中所有的行都要满足连接条件&#xff0c;而外连接则不然。 在外连接中&#xff0c;某些不满条件的列也会显示出来&#xff0c;也就是说&#xff0c;只限制其中一个表的行&#xff0c;而不限制另一…

备战蓝桥杯---牛客寒假算法基础集训6

1.并查集数学 分析&#xff1a; 首先我们知道算数基本定理&#xff0c;如果两个数有大于1的质因子&#xff0c;那么我们就需要把他们放在同一个集合&#xff0c;因此我们可以用欧拉刷出1e6范围内的素数&#xff0c;然后依次看输入的数。 拿202*2*5举例子&#xff0c;我们在求…

算法系列--链表刷题(二)

&#x1f495;"轻舟已过万重山"&#x1f495; 作者&#xff1a;Mylvzi 文章主要内容&#xff1a;算法系列–链表刷题(二) 今天为大家带来的是算法系列--链表刷题(二),带来了几道经典的有关链表的面试题(合并K个有序列表) 1.两数相加 https://leetcode.cn/problems/a…

RAG系统与SSE流式输出

1 SSE Server-Sent Events(SSE)的核心在于允许服务器通过HTTP连接主动向客户端发送数据,这种机制主要用于实现实时通信。 Server-Sent Events(SSE)采用一种特定的文本格式进行数据传输,这种格式旨在简化服务器向客户端实时发送消息的过程。SSE消息的格式要求如下: 消息…

测试ALPHA开发板CAN1的设备树文件

一. 简介 前面一篇文章学习了 ALPHA开发板上的 CAN接口的设备节点信息&#xff0c;文章如下&#xff1a; ALPHA开发板修改CAN的设备树节点信息-CSDN博客 本文对设备树文件进行测试&#xff0c;即开发板加载 .dtb设备树文件。 二. 加载测试 CAN的设备树文件 1. 拷贝设备树…