如何用Git Log命令列出提交历史并举例说明?

Git源代码版本控制工具提供了很多特性。最重要和有用的特性之一是 log 或者历史。我们可以用 git log 命令,以便以不同的方式列出、筛选、查看提交历史记录。在本教程中,我们将研究 git log 命令使用的详细例子。

null

列出提交历史记录

我们先从 git  log 不带任何参数的命令。这将在一个交互终端中列出所有提交历史,我们可以在其中查看和导航。

$ git log
List Commit History
列出提交历史记录

我们可以从输出中看到以下关于提交的信息。

  • `Commit`number是唯一的散列,用于标识提交
  • `作者:提交的开发者。还提供电子邮件信息
  • `Date`指定提交发生的时间
  • 最后一行提供有关提交的注释和信息。

每行列出一个提交

如果我们只需要列出提交id的唯一部分以及作者提供的注释,我们可以使用 --oneline 选项,它只打印关于每个提交的单行。

$ git log --oneline
List One Commit Per Line
每行列出一个提交

打印统计信息

我们可能需要打印有关提交的详细信息。我们将使用 --stat 选项。

$ git log --stat
Print Statistics 
打印统计信息

我们可以从输出中看到额外的信息,如更改的文件、更改的文件计数、添加的行数、删除的行数。

打印修补程序或差异信息

如果我们对需要使用的代码差异信息感兴趣 -p 选项。 -p 选项可用于打印提交文件的路径或差异。

$ git log -p
Print Patch or Diff Information
打印修补程序或差异信息

我们从截图上看到,添加和删除的代码显示得很清楚。添加的代码颜色为绿色,删除的代码颜色为红色。还添加了以开头的代码行 + 加上和删除的代码行以 - 减去。

详细显示/打印特定提交

如果我们需要看具体的承诺,我们需要使用 git show 命令。我们还将提供提交id或数字,我们可以打印。

$ git show b1efd742499b00eef970feeef84dc64f301db61f
Print Specific Commit In Detail
详细打印特定提交

我们可以看到,特定提交提供了详细的差异信息。

相关文章: 如何用示例克隆Git分支命令教程?

显示/打印特定的提交统计信息

如果我们不能打印特定的提交状态和信息,我们可以提供 --stat 选择 git show 命令。

$ git show --stat b1efd742499b00eef970feeef84dc64f301db61f
Show/Print Specific Commit Stats
显示/打印特定的提交统计信息

按作者分组提交

如果我们想根据作者姓名检查提交,我们需要按作者分组提交。我们可以用 shortlog 命令以列出按作者姓名分组的注释。

$ git shortlog
Group Commits By Author
按作者分组提交

显示作者提交编号

如果我们对作者感兴趣,我们需要提供提交的数字 -s 选项 shortlog 命令。这将为每个作者提供提交编号。

$ git shortlog -s
Show Author Commit Numbers
显示作者提交编号

按提交编号对作者排序

我们可以改进前面的示例,并根据提交数对作者进行排序。我们将补充 -n 上一个示例中的final命令如下所示。

$ git shortlog -n -s
Sort Authors By Commit Numbers
按提交编号对作者排序

漂亮的印花

我们还可以根据需要定制日志输出。我们可以用 --pretty 选项和som参数打印不同的日志输出。在本例中,我们将使用 %cn 作者姓名 %h 提交和的哈希值 %cd 提交时间。

$ git log --pretty="%cn committed %h on %cd"
Pretty Print
漂亮的印花

按作者筛选

在某些情况下,我们可能需要根据作者姓名过滤提交。我们将使用 --author 并提供作者名称以筛选并仅显示给定的作者。在本例中,我们将筛选名为 dmiller .

$ git log --author="dmiller"
Filter By Author
按作者筛选

按数字筛选

如果要列出并打印指定数量的提交,则需要使用 - 我们要打印的号码。在本例中,我们将打印最后5次提交。

$ git log -5 --oneline
Filter By Number
按数字筛选

按日期筛选

我们也可以根据  迄今为止。我们将提供开始上市的日期。我们将使用 --after 选项并提供日期。日期将采用MM-DD-YYYY格式。在本例中,我们将列出2018年12月1日之后创建的提交。

$ git log --after="12-1-2018"
Filter By Date
按日期筛选

我们也可以使用 --before 将打印在指定日期之前创建的提交。

相关文章: 如何重置Git头?

按消息筛选

我们可以根据消息过滤打印或列出日志。我们将使用 --grep 选项并提供过滤项。我们将筛选消息 http 在这个例子中。

$ git log --grep="http"
Filter By Message
按消息筛选

按文件筛选

如果我们在提交过程中寻找特定的文件更改,我们可以过滤文件。我们将使用 -- 并提供预期处于提交更改中的文件名。在本例中,我们将查看文件 ip.c 这是预期的承诺。

$ git log -- ip.c

按内容筛选

我们还可以根据提交内容过滤提交。这将是非常有用的,如果我们想搜索和过滤的具体变化。我们将使用 -S 选项并提供过滤项。在本例中,我们将筛选 raw_scan . 请记住,这可能需要一些时间,因为它将搜索所有没有索引的提交以进行快速搜索。

$ git log -S"raw_scan"
Filter By Content
按内容筛选

按提交Id/哈希范围筛选

提交有自己的哈希ID。如果我们想列出提交的范围,我们可以提供开始和结束提交id,在这里它们之间的提交将被列出。

$ git log b642dc129c4d349a849fb0e..1ba01193725f4c
Filter By Commit Id/Hash Range
按提交Id/哈希范围筛选

仅列出合并

默认情况下,会打印并列出合并提交。但是如果默认行为是change with config,并且我们想要列出和打印合并提交,那么我们可以使用 --merge 选项也可以列出合并提交。

$ git log --merge

不列出合并

默认情况下,合并提交将打印并与一起列出 git log 命令。如果我们不想列出或打印,那么对于所有操作,我们都可以使用 --no-merges 不显示合并提交的选项。

$ git log --no-merge
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享