内容纲要

🗂 | 查看 Git 专题可浏览更多内容


如果想要回顾下提交历史,可以使用 git log 命令:

$ git log
commit 745df03e190fba77b06bda76593aa893caa477f7 (HEAD -> master)
Author: Conners Hua <[email protected]>
Date:   Thu Jan  14 17:56:13 2020 +0800

    添加内容正文

commit a02c2108c97e8ea09f623404360940c528415ffb
Author: Conners Hua <[email protected]>
Date:   Thu Jan 14 17:55:45 2020 +0800

    添加文章标题

commit de4d93a0f98c0657188222bbc0053f6fdc63b4a7
Author: Conners Hua <[email protected]>
Date:   Wed Jan 13 23:38:05 2020 +0800

    添加说明文件
(END)

💡 如果你不知道如何从 git log 的界面中退出,按下 Q 键即可。

不传入任何参数的默认情况下,git log 会按时间先后顺序列出所有的提交,最近的更新排在最上面。 正如你所看到的,这个命令会列出每个提交的 SHA-1 校验和、作者的名字和电子邮件地址、提交时间以及提交说明。

git log 有一些比较实用的选项参数:

使用不同格式显示历史

--pretty 选项可以使用不同于默认格式的方式展示提交历史。

这个选项有一些内建的子选项如 oneline 会将每个提交放在一行显示,在浏览大量的提交时非常有用。 另外还有 shortfullfuller 选项,它们展示信息的格式基本一致,但是详尽程度不一:

$ git log --pretty=oneline
745df03e190fba77b06bda76593aa893caa477f7 (HEAD -> master) 添加内容正文
a02c2108c97e8ea09f623404360940c528415ffb 添加文章标题
de4d93a0f98c0657188222bbc0053f6fdc63b4a7 添加说明文件

只显示特定数量的历史

假如提交历史非常多,但你只想看最近的 5 条历史

$ git log -5

# 可以和其他选项结合起来使用,如:
$ git log --pretty=oneline -5

显示历史改动

以一个 Markdown 文本文件为例,它的内容是这样的

## 这是一个标题

这是正文内容第一行
这是正文内容第二行

通过几次提交分别为:

  1. 创建空的 MD 文件;
  2. 添加了二级标题;
  3. 添加了正文内容;
  4. 删除了正文内容的第二行;

那么当我想要通过命令查看这几次提交的修改内容时,可以使用 -p 选项:

# 当想要查看提交的差异
$ git log -p
commit 66d2ba27ebb06ca20dbfed7d3b6d3ff8e65bc571 (HEAD -> master)
Author: Conners Hua <[email protected]>
Date:   Fri Jan 15 10:34:33 2020 +0800

    删除正文内容的一行

diff --git a/README.md b/README.md
index 972b941..19eb129 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,3 @@
 ## 这是一个标题

-这是正文内容第一行
-这是正文内容第二行
\ No newline at end of file
+这是正文内容第一行
\ No newline at end of file

commit 525c317deb877f5916c3a0858be44d98c6dd481d
Author: Conners Hua <[email protected]>
Date:   Fri Jan 15 10:34:16 2020 +0800

    添加正文内容

diff --git a/README.md b/README.md
index ad644b5..972b941 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,4 @@
-## 这是一个标题
\ No newline at end of file
+## 这是一个标题
+
+这是正文内容第一行
+这是正文内容第二行
\ No newline at end of file
\ No newline at end of file

commit a02c2108c97e8ea09f623404360940c528415ffb
Author: Conners Hua <[email protected]>
Date:   Thu Jan 14 17:55:45 2020 +0800

    添加文章标题

diff --git a/README.md b/README.md
index e69de29..ad644b5 100644
--- a/README.md
+++ b/README.md
@@ -0,0 +1 @@
+## 这是一个标题
\ No newline at end of file

commit de4d93a0f98c0657188222bbc0053f6fdc63b4a7
Author: Conners Hua <[email protected]>
Date:   Wed Jan 13 23:38:05 2020 +0800

    添加说明文件

diff --git a/README.md b/README.md
new file mode 100644
index 0000000..e69de29
(END)

显示分支与合并历史

--graph 选项可以在日志旁以 ASCII 图形显示分支与合并历史

$ git log --graph

高级格式

最后附上一个个人蛮喜欢的选项参数搭配:

$ git log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit