Git – 过滤提交历史
Git 源代码版本控制工具提供了很多功能。最重要和最有用的功能之一是日志或历史记录。我们可以使用 git log 命令以不同的方式列出、过滤、查看提交历史。在这里,我们将通过示例详细检查 git log 命令的用法。
列出提交历史:我们将从不带任何参数的 git log 命令开始。这将在我们可以查看和导航的交互式终端中列出所有提交历史记录。
$ git log
我们可以从输出中看到有关提供的提交的以下信息。
- 提交号是唯一的哈希,用于标识提交
- 作者提交的开发人员。此外,还提供电子邮件信息
- 日期指定提交发生的时间
- 最后一行提供了有关提交的注释和信息。
每行列出一个提交:如果我们只需要列出提交 id 的唯一部分以及作者提供的注释,我们可以使用 –oneline 选项,它只会打印关于每个提交的一行。
$ git log --oneline
打印统计信息:我们可能需要详细打印有关提交的信息。我们将使用 –stat 选项。
$ git log --stat
我们可以从输出中看到额外的信息,如更改的文件、更改的文件计数、添加的行数、删除的行数。
打印补丁或差异信息:如果我们对代码差异信息感兴趣,我们需要使用 -p 选项。 -p 选项可用于打印提交文件的路径或差异。
$ git log -p
我们从屏幕截图中看到,添加和删除的代码清晰可见。添加的代码颜色为绿色,删除的代码为红色。还添加了以 +plus 开头的代码行,并删除了以 - minus 开头的代码行。
详细显示/打印特定提交:如果我们需要查看特定提交,我们需要使用 git show 命令。我们还将提供我们可以打印的提交 ID 或编号。
$ git show b1efd742499b00eef970feeef84dc64f301db61f
我们可以看到具体的提交提供了详细的 diff 信息。
显示/打印特定的提交统计信息:如果我们不能只打印特定的提交统计信息和信息,我们可以为 git show 命令提供 –stat 选项。
$ git show --stat b1efd742499b00eef970feeef84dc64f301db61f
按作者分组提交:如果我们想根据作者的名字检查提交,我们需要按作者分组提交。我们可以使用 shortlog 命令来列出按作者姓名分组的提交注释。
$ git shortlog
显示作者提交编号:如果我们对作者的提交编号感兴趣,我们需要为 shortlog 命令提供 -s 选项。这将为每个作者提供提交编号。
$ git shortlog -s
按提交编号排序作者:我们可以改进之前的示例并按提交编号对作者进行排序。我们将在前面的示例中添加 -n,最终命令如下所示。
$ git shortlog -n -s
Pretty Print:我们也可以根据需要自定义日志输出。我们可以使用 –pretty 选项和一些参数来打印不同的日志输出。在此示例中,我们将使用 %cn 作为作者姓名 %h 提交的哈希值和 %cd 提交时间。
$ git log --pretty="%cn committed %h on %cd"
按作者过滤:在某些情况下,我们可能需要根据作者姓名过滤提交。我们将使用 –author 并提供作者姓名来过滤和仅显示给定的作者。在本例中,我们将过滤名为 dmiller 的作者。
$ git log --author="dmiller"
按数字过滤:如果我们想列出并打印我们需要使用的指定提交数量 - 以及我们想要打印的数字。在本例中,我们将打印最后 5 次提交。
$ git log -5 --oneline
仅列出合并:默认情况下,合并提交被打印并列出。但是,如果默认行为通过 config 更改并且我们想要列出和打印合并提交,我们也可以使用 –merge 选项来列出合并提交。
$ git log --merge
列出无合并:默认情况下,合并提交使用 git log 命令打印并列出。如果我们不想列出或打印,那么对于所有操作,我们可以使用 –no-merges 选项,它不会显示合并提交。
$ git log --no-merge