git log 命令
// 终端显示 git log 命令的输出结果
zhanghuabin-mac:course-git-blog-project zhanghuabin$ git log
commit a3dc99a197c66ccb87e3f4905502a6c6eddd15b1
Author: Richard Kalehoff <richardkalehoff@gmail.com>
Date: Mon Dec 5 16:34:15 2016 -0500
Center content on page
commit 6f04ddd1fb41934c52e290bc937e45f9cd5949aa
Author: Richard Kalehoff <richardkalehoff@gmail.com>
Date: Mon Dec 5 16:30:40 2016 -0500
Add breakpoint for large-sized screens
:
上面是这个仓库中的提交日志,显示了多次提交。每次提交显示了提交的 SHA、提交人、提交日期以及提交说明(一个简短描述,说明在这个提交中作了哪些更改)。下面的 :
冒号表示可以显示更多的输出行,我们可以按 J
键或向下箭头可以一次向下滚动一行。当冒号变为单词 END
时,表示最后一个提交。要离开分页器按下 q
键即可。
git log
命令用于显示仓库中所有 commit 的信息。默认情况下,该命令会显示仓库中每个 commit 的:
- SHA
- 作者
- 日期
- 消息
git 使用命令行分页器 less
浏览所有信息。以下是 less 的重要快捷键:
- 要按行向下滚动,使用
j 或 ↓
- 要按行向上滚动,使用
k 或 ↑
- 用
d
键可以向下滚动半个页面,用u
键可以向上滚动半个页面 - 要退出,使用
q
git log --oneline
选项用于更改 git log
显示信息的方式。此命令:
- 每行显示一个 commit
- 显示 commit 的 SHA 的前 7 个字符
- 显示 commit 的消息
git log --stat
,用于更改 git log
显示信息的方式。此命令会:
- 显示被修改的文件
- 显示添加/删除的行数
- 显示一个摘要,其中包含修改/删除的总文件数和总行数
上图示例中,它会同时包括实际的代码更改
或对 css 文件所做的补丁
输出。diff
差异和补丁指的是同一回事,补丁显示的是文件的原始版本和更新版本之间的差异。我们看到的是 css
文件,它出现在一个名为 a
的目录中,但你并不会在库中实际看到这个目录,然后是第二个版本,它出现在 b
目录中,因为它是第二个。这两个名称相同,因为我们看到的是同一个文件的两个不同版本。下一行显示的是文件更改前第一个版本的哈希值和更改后的哈希值,它们也是文件的新旧版本。下面是 CSS
文件的实际代码,前面带有加号的绿色行表示这些行是此次提交添加的。
@@ -38,6 +38,11 @@ p {
line-height: 1.5;
}
它可以告诉我们文件哪里做出了编辑,这说明在文件的较旧或原始版本中(-38
),这段代码来自第 38 行并显示了六行代码。在文件的较新或当前版本中(+38
),但现在有 11 行代码,原来的六行加上新的五行,变成了 11 行代码。
git 按行进行跟踪编辑
,所以如果对一行进行编辑,它会显示该行被移除,然后再被添加。补丁输出的重要内容是我们正在查看的文件和修改,另外我们有时也需要知道文件中哪些地方进行了修改。
git log -p(--patch)
,用来更改 git log 显示信息的方式。此命令会向默认输出中添加以下信息:
- 显示被修改的文件
- 显示添加/删除的行所在的位置
- 显示做出的实际更改
git log -p
输出结果详细说明
git log --stat
和 git log -p
都是非常实用的命令。运行 git log -p --stat
,它同时显示这两种信息,并且统计信息显示在补丁信息上方。
git log -p -w
中的 -w
忽略所有的空间空格更改。即使一行有空格而另一行没有空格,这也会忽略差异。
上一部分需要在补丁输出中不断向下滚动,以便找到正确的 commit 并查看其信息。如果能显示特定 commit 的详情,而不用关心仓库中的所有其他内容?
实际上有两种实现方式!
- 向
git log
提供你要查看的 commit 的 SHA - 使用新的
git show
命令
可以向所有这些命令提供 commit 的 SHA 作为最后一个参数:
通过提供 SHA,git log -p
命令将从这条 commit 开始!无需滚动并逐条查阅!注意,它还会显示在所提供的 SHA 之前提交的所有 commit 信息
。
git show
,另一个显示特定 commit 的命令。它将仅显示一个 commit
。因此,如果你看不到任何其他 commit,不要惊慌。它只显示一个 commit。git show
命令的输出和 git log -p
命令的完全一样。
但是,git show 可以与我们了解过的大部分其他选项一起使用:
-
--stat
- 显示更改了多少文件,以及添加/删除的行数 -
-p
或--patch
- 显示默认补丁信息,但是如果使用了--stat
,将不显示补丁信息,因此传入-p
以再次添加该信息 -
-w
- 忽略空格变化