程序员社区

Git系列教程 --- 32、Git Log命令详解

版本控制系统的优势在于它可以记录更改。这些记录允许我们检索数据,如提交、找出错误、更新。但是,如果我们无法驾驭它,所有这些历史都将毫无用处。此时,我们需要 git log 命令。

Git log 是一个实用工具,用于查看和读取存储库中发生的所有事情的历史记录。多个选项可以与 git log 一起使用,以使历史记录更加具体。

通常,git log 是提交的记录。一个 git 日志包含以下数据:

  • 提交哈希,是由 SHA(安全哈希算法)算法生成的 40 个字符的校验和数据。它是一个独特的数字。
  • 提交作者元数据:作者信息,如作者姓名和电子邮件。
  • 提交日期元数据:它是提交时间的日期时间戳。
  • 提交标题/消息:它是提交消息中给出的提交的概述。

如何退出 git log 命令?

可能会出现这样的情况,你运行git log命令,就卡在那里了。您想输入或返回 bash,但您不能。当您单击Enter键时,它将导航到旧命令,直到结束标志。

这个问题的解决方法是按下Q(Q代表退出)。它会让你退出这种情况并回到命令行。现在,您可以执行任何命令。

基本的 Git 日志

git log 命令是 git 最常用的命令之一。它是 Git 最有用的命令。每次需要查看历史记录时,都必须使用 git log 命令。基本的 git log 命令将显示最近的提交和头部的状态。它将用作:

$ git log  

上面的命令将显示最后一次提交。考虑以下输出:

file

上面的命令列出了所有最近的提交。每个提交都包含一些唯一的 sha-id,它是由 SHA 算法生成的。它还包括日期、时间、作者和一些其他详细信息。

我们可以在命令行上执行一些操作,如滚动、跳跃、移动和退出。要在命令行上滚动,请按 k 向上移动,j 向下移动,按空格键向下滚动整页以向上滚动一页,按 q 退出命令行。


Git 日志单行

oneline 选项用于将输出显示为每行一个提交。它还简要显示输出,如提交 SHA 的前七个字符和提交消息。

它将按如下方式使用:

$ git log --oneline  

所以,通常我们可以说 --oneline 标志导致 git log 显示:

  • 每行一次提交
  • SHA 的前七个字符
  • 提交消息

考虑以下输出:

file

从上面的输出中我们可以更准确地看到,每次提交只在一行中给出,并带有七位 sha 编号和提交消息。

Git 日志统计

log 命令显示已修改的文件。它还显示已更新的总记录的行数和汇总行。

一般我们可以说stat选项是用来显示

  • 修改后的文件,
  • 添加或删除的行数
  • 更改记录总数的汇总行
  • 添加或删除的行。

它将按如下方式使用:

$ git log --stat  

上述命令将显示已修改的文件。考虑以下输出:

file

从上面的输出中,我们可以看到所有列出的提交都是存储库中的修改。

Git 日志 P 或补丁

git log patch 命令显示已修改的文件。它还显示添加、删除和更新行的位置。

它将用作:

$ git log --patch  

或者

$ git log -p  

一般来说,我们可以说 --patch 标志用于显示:

  • 修改过的文件
  • 您添加或删除的行的位置
  • 已进行的具体更改。

考虑以下输出:

file

上面的输出显示了修改后的文件以及已添加或删除的行的位置。


Git 日志图

Git log 命令允许以图表的形式查看 git 日志。要以图表的形式列出提交,请使用 --graph 选项运行 git log 命令。它将按如下方式运行:

$ git log --graph  

为了使输出更具体,您可以将此命令与 --oneline 选项结合使用。它将按如下方式运行:

$ git log --graph --oneline  

过滤提交历史

我们可以根据需要过滤输出。这是 Git 的一个独特功能。我们可以在输出上应用许多过滤器,如数量、日期、作者等。每个过滤器都有其规格。它们可用于在输出上实现一些导航操作。

让我们详细了解每个过滤器。

按金额:

我们可以使用 git log 命令来限制输出提交的数量。这是最具体的命令。如果您对更少的提交感兴趣,此命令将消除复杂性。

限制 git log 的输出,包括 - 选项。如果我们只想要最后三个提交,那么我们可以在 git log 命令中传递参数 -3。考虑以下输出:

file

从上面的输出我们可以看出,我们可以限制 git log 的输出。

按日期和时间:

我们可以按日期和时间过滤输出。我们必须通过--after-before参数来指定日期。这两个参数都接受各种日期格式。它将按如下方式运行:

$ git log --after="yy-mm-dd"  

上面的命令将显示在给定日期之后所做的所有提交。考虑以下输出:

file

上面的命令列出了“2019-11-01”之后的所有提交。

我们还可以传递适用的参考语句,如“昨天”、“1 周前”、“21 天前”等。它将运行为:

git log --after="21 days ago"  

上面的命令将显示 21 天前的提交。考虑以下输出:

file

我们还可以跟踪两个日期之间的提交。要跟踪在两个日期之间创建的提交,请传递语句引用--before--after日期。假设,我们要跟踪“2019-11-01”和“2019-11-08”之间的提交。我们将按如下方式运行命令:

$ git log --after="2019-11-01" --before="2019-11-08 "  

上面的命令将显示日期之间的提交。考虑以下输出:

file

上面的输出显示给定时间段之间的提交。我们可以使用--since 和--until 代替--after 和--before。因为它们分别是同义词。

作者:

我们可以过滤特定用户的提交。假设,我们只想列出特定团队成员所做的提交。我们可以使用 -author 标志按作者姓名过滤提交。此命令采用正则表达式并返回与该模式匹配的作者所做的提交列表。您可以使用确切名称而不是模式。此命令将按如下方式运行:

$ git log --author="Author name"  

上面的命令将显示给定作者所做的所有提交。考虑以下输出:

file

从上面的输出中,我们可以看到列出了作者ImDwivedi1 的所有提交。

我们可以使用字符串代替正则表达式或确切名称。考虑以下语句:

$ git log --author="Stephen"  

上面的语句将显示作者包含姓名 Stephen 的所有提交。作者的名字不需要完全匹配;它只有指定的短语。

我们知道,作者的邮箱也涉及到作者的姓名,这样我们就可以使用作者的邮箱作为模式或精确搜索。假设,我们要跟踪电子邮件服务为 google 的作者的提交。为此,我们可以使用通配符作为“@gmail.com”。考虑以下语句:

$ git log -author="@gmail.com"  

上面的命令将显示模式中给出的作者提交。考虑以下输出:

file

通过提交消息:

通过提交消息过滤提交。我们可以使用 grep 选项,它将作为作者选项工作。

它将按如下方式运行:

$ git log --grep=" Commit message."  

我们可以使用提交消息的简短形式而不是完整的消息。考虑以下输出。

file

上面的输出显示了在其提交消息中包含单词 commit 的所有提交。

还有许多其他过滤选项可用,例如我们可以按文件名、内容等进行过滤。

赞(0) 打赏
未经允许不得转载:IDEA激活码 » Git系列教程 --- 32、Git Log命令详解

一个分享Java & Python知识的社区