git log命令显示已提交的快照的所有的历史信息。它会列出项目历史记录、对其进行过滤并搜索特定的更改。git status是用来检查工作目录和暂存区,而 git log 只对提交的历史进行操作。
git log 和 git status
可以通过多种方式自定义日志输出,从简单地过滤提交到以完全用户定义的格式显示它们。下面介绍了一些最常见的配置git log。
$ git log
使用默认格式显示整个提交历史记录。如果输出超过一屏,可以使用空格键进行滚动,q按键退出。
git log -n <limit>
-n 指定显示的提交的条数。例如,以下命令将将只显示 3 个提交。
$ git log -n 3
将每个提交压缩为一行。这对于获得项目历史的信息很有帮助。
$ git log --oneline
git log 一条提交记录显示一行
我们还可以指定 --stat 选项
$ git log --stat
该选项除了普通git log信息外,还包括哪些文件被更改以及从每个文件中添加或删除的行的相对数量。与此相似的还可以指定 -p 选项
$ git log -p
显示每个提交的补丁。该选项显示了每个提交的完整差异,这是我们可以查看的项目历史记录的最详细视图。
$ git log --author="<pattern>"
可以通过指定 --author 选项搜索特定作者的提交。参数可以是字符串或者也可以是正则表达式。
$ git log --grep="<pattern>"
使用 --grep 选项可以指定某些关键词,用来搜索提交,如果提交信息中包含这些关键词,则显示该次提交。可以是普通字符串或正则表达式。
$ git log <since>..<until>
仅显示发生在<since>和<until>之间的提交。两个参数都可以是提交 ID、分支名称HEAD或任何其他类型的引用。
$ git log <file>
只显示包含指定文件的提交。这是查看特定文件历史记录的简单方法。
$ git log --graph --decorate --oneline
--graph 标志将在提交消息的左侧绘制基于文本的提交图。--decorate 添加所显示提交的分支名称或标签。--oneline 将提交信息显示在一行上,以便于浏览提交一目了然。
git log 多样显示
git log命令是 Git 用于查看仓库提交历史的基本工具。当我们需要查找项目的特定版本或弄清楚通过合并功能分支将引入哪些更改时,我们需要使用该命令。
commit 3157ee3718e180a9476bf2e5cab8e3f1e78a73b7 Author: jiyik
git log 命令显示的信息大部分非常简单;然而,第一行需要稍微解释一下。后面的 40 个字符的字符串是 git commit 提交内容的 SHA-1 校验和。它有两个目的。首先,它确保提交的完整性——如果它被破坏,提交将生成不同的校验和。其次,该值可用作提交的唯一 ID。
这个 ID 可以在命令中使用,比如引用特定的提交。例如,将显示某次提交 ID的所有内容。
$ git log 3157ee3718e180a9476bf2e5cab8e3f1e78a73b7
除了校验和之外,分支名称(在分支模块中讨论)和 HEAD 关键字也是引用单个提交的常用方法。HEAD 总是指向当前的提交,不管是处于哪个分支上。
~ 字符可用于对提交的父项进行相对引用。例如,3157e~1指的是3157e提交的上一次提交,HEAD~3是当前提交的前三次提交(相当于是当前提交的曾祖父)。